我该如何使用矩阵中的值更新
在一个
类似于`data.table`语法的另一种写法会产生多个警告和非常奇怪的输出。
data.table
中的多个列?以下是一个最小工作示例,说明我所面临的问题:library(data.table)
DT = data.table(expand.grid(1:3,1:3,1:3))
DF = expand.grid(1:3,1:3,1:3)
mat = matrix(seq(0, 80), 27, 3)
在一个
data.frame
的世界里,我会选择以下语法:DF[,2:ncol(DF)] = mat[,2:ncol(DF)] #Data frame approach
类似于`data.table`语法的另一种写法会产生多个警告和非常奇怪的输出。
DT[,2:ncol(DF) := mat[,2:ncol(DF)], with=FALSE] #Data table approach
这显然是有毛病的-因为警告表明矩阵实际上已被扁平化了。警告消息:
1: In `[.data.table`(DT, , `:=`(2:ncol(DF), mat[, 2:ncol(DF)]), with = FALSE) :
2 column matrix RHS of := will be treated as one vector
DT[,3:ncol(DT) - 1]
是一个常见的严重错误 - 您正在从(3:ncol(DT))
中的每个数字中减去1,而不仅仅是ncol(DT)
本身。 - Señor O:=
的右侧需要一个列表。强制转换是不可避免的。 - Arun