sri*_*amn 4 r matrix data.table
如何data.table使用矩阵中的值更新多个列.这是一个说明我面临的问题的MWE:
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)
Run Code Online (Sandbox Code Playgroud)
在这个data.frame世界里,我会使用这种语法:
DF[,2:ncol(DF)] = mat[,2:ncol(DF)] #Data frame approach
Run Code Online (Sandbox Code Playgroud)
类似的data.table语法产生了多个警告,输出非常奇怪.
DT[,2:ncol(DF) := mat[,2:ncol(DF)], with=FALSE] #Data table approach
Run Code Online (Sandbox Code Playgroud)
这显然是错误的 - 因为警告表明矩阵实际上是扁平的.警告信息:
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
Run Code Online (Sandbox Code Playgroud)
您需要将RHS转换为a list,并且一种简单的方法是使用as.data.table:
DT[, 2:ncol(DT) := as.data.table(mat[,2:ncol(DT)])]
Run Code Online (Sandbox Code Playgroud)
with 这里没有必要,因为LHS被推断为自动表示列数.
| 归档时间: |
|
| 查看次数: |
1488 次 |
| 最近记录: |