【发布时间】:2012-01-18 13:21:24
【问题描述】:
在转置大型数据集时遇到了一个奇怪的问题。我想将非线性飞行路线列表(即每个具有 30 个顶点的向量子列表)放入数据框(顶点有 32 列)。列表强制转换为 data.frame 没有问题,但在 (1) 用 t(x) 转置和 (2) 转换为矩阵时失败。
To illustrate:
> class(gc)
[1] "list"
> length(gc)
[1] 58278
> gc[[1]][1:30]
[1] 147.2200 147.1606 147.1012 147.0418 146.9824 146.9231 146.8638
[8] 146.8046 146.7454 146.6862 146.6270 146.5679 146.5088 146.4498
[15] 146.3908 146.3318 146.2728 146.2139 146.1550 146.0961 146.0373
[22] 145.9785 145.9197 145.8610 145.8022 145.7435 145.6849 145.6262
[29] 145.5676 145.5090
> gc2 <- data.frame(gc)
> nrow(gc2)
[1] 32
> length(gc2)
[1] 116556
> gc2[1:5,1:5]
lon lat lon.1 lat.1 lon.2
1 147.2200 -9.443383 -80.37861 43.46083 -87.90484
2 147.1606 -9.335072 -80.23135 43.52385 -87.53193
3 147.1012 -9.226751 -80.08379 43.58667 -87.15751
4 147.0418 -9.118420 -79.93591 43.64931 -86.78161
5 146.9824 -9.010080 -79.78773 43.71175 -86.40421
> gc3 <- t(gc2)
> nrow(gc3)
[1] 116556
> length(gc3)
[1] 3729792
> gc3 <- as.matrix(gc2)
> nrow(gc3)
[1] 32
> length(gc3)
[1] 3729792
3729792这个数字是116556*32..
感谢您的帮助!
【问题讨论】:
-
“失败”是什么意思?转置的结果是矩阵,而不是 data.frame:它的长度是元素的数量,即 rows*columns -- data.frame 的长度是列数。
-
我们可以玩弄一个工作示例怎么样?
-
欢迎来到 SO。为了将来参考,如果问题包含问题,而不是关于“这不起作用”的陈述,通常会更清楚。