我一直在浏览教程和文档,但还没有想出如何将所有列的值向量分配给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
的第一行,同时实现了良好的性能(因为我还想逐步填充其他行)?
答案 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)]