假设我们有以下数据表:
> DT1
11 12 13 14
15 16 17 18
19 20 21 22
23 24 25 26
27 28 29 30
31 32 33 34
...
这是新的输出:
> DT2
11 12 13 14 15 16 17 18 19 20 21 22
23 24 25 26 27 28 29 30 31 32 33 34
...
我用data.frame和for循环实现了这一点。如何通过data.table实现它?数据集要大得多,data.frame中的for循环有点慢。
我的循环的一个小例子:
for ...
DT2[1,1:4] <- DT1[1,]
DT2[1,5:8] <- DT1[2,]
DT2[1,9:12] <- DT1[3,]
DT2[2,1:4] <- DT1[4,]
...
end for
我可以使用data.table进行改进吗?循环的语法是什么?
答案 0 :(得分:1)
如果dt1
中的所有条目属于同一类型(数字或字符串或TRUE
/ FALSE
),那么重建索引/重新整形矩阵将更容易,更快捷:
dt1 <- matrix(11:34, ncol=4, byrow=TRUE)
dt1
# [,1] [,2] [,3] [,4]
#[1,] 11 12 13 14
#[2,] 15 16 17 18
#[3,] 19 20 21 22
#[4,] 23 24 25 26
#[5,] 27 28 29 30
#[6,] 31 32 33 34
dt2 <- matrix(as.vector(t(dt1)), ncol=12, byrow=TRUE)
dt2
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
#[1,] 11 12 13 14 15 16 17 18 19 20 21 22
#[2,] 23 24 25 26 27 28 29 30 31 32 33 34