gpt4 book ai didi

r - data.table:用矩阵更新 data.table 中的多列

转载 作者:行者123 更新时间:2023-12-04 22:29:50 25 4
gpt4 key购买 nike

如何使用矩阵中的值更新 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)

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

最佳答案

您需要将 RHS 转换为 list ,一个简单的方法是使用 as.data.table :

DT[, 2:ncol(DT) := as.data.table(mat[,2:ncol(DT)])]
with 在这里不是必需的,因为 LHS 被推断为自动表示列号。

关于r - data.table:用矩阵更新 data.table 中的多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31972989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com