将向量分配给R中的特定现有数据表行

时间:2016-06-04 17:37:59

标签: r data.table

我一直在浏览教程和文档,但还没有想出如何将所有列的值向量分配给data.table中的一个现有行。

我从一个空data.table开始,它已经有正确的列数和行数:

dt <- data.table(matrix(nrow=10, ncol=5))

现在我为data.table之外的一行计算一些值,并将它们放在向量vec中,e。 G:

vec <- rnorm(5)

我怎样才能将vec的值赋给e。 G。 data.table的第一行,同时实现了良好的性能(因为我还想逐步填充其他行)?

1 个答案:

答案 0 :(得分:9)

首先,您需要获取正确的列类型,因为您创建的NA矩阵是合乎逻辑的。通过为它们分配数字,不会神奇地改变列类型。

dt[, names(dt) := lapply(.SD, as.numeric)] 

然后您可以使用

更改第一行的值
dt[1, names(dt) := as.list(vec)]

也就是说,如果从数字矩阵开始,则不必更改列类型。

dt <- data.table(matrix(numeric(), 10, 5))
dt[1, names(dt) := as.list(vec)]