【发布时间】:2016-06-04 17:37:59
【问题描述】:
我一直在查看教程和文档,但还没有弄清楚如何将所有列的值向量分配给 data.table 中的一个现有行。
我从一个空的data.table 开始,它已经具有正确的列数和行数:
dt <- data.table(matrix(nrow=10, ncol=5))
现在我为data.table 之外的一行计算一些值,并将它们放在向量vec 中,例如。 g.:
vec <- rnorm(5)
如何将 vec 的值分配给 e。 G。 data.table 的第一行同时实现了良好的性能(因为我也想逐步填充其他行)?
【问题讨论】:
-
由于您出于性能原因使用
data.table(如下面一个答案的评论中所述),我认为一次又一次地添加(许多)行是不是有效的因为data.table(如data.frame)是列存储,而不是行存储(这意味着每当您添加一行时,必须访问内存中的不同位置)。需要添加行的原因(算法)是什么? -
我正在创建一个非常大的空表(11000 行 x 8000 列),然后我做一些计算来创建一个向量,然后我用它来逐行填充这个表。我认为使用 data.table 可能会比使用矩阵或数据框更快。
-
好的,我认为
data.table这样使用它会更快,因为您预先分配了所需的内存(表大小)并通过引用覆盖行(如果您使用 Richard 的答案和:=运算符),因为此解决方案不会仅仅因为您修改一个值而复制整个数据。我可以编辑您的问题以阐明确切的用例吗?
标签: r data.table