R 使用点时为data.table赋值
我想按名称从data.table的多个列中减去向量。我使用了一种点-点的方法,我似乎无法理解为什么上一个赋值不起作用,因为两个表达式单独计算时效果都很好。我附上了一个可复制的例子,应该可以清楚地说明这个问题R 使用点时为data.table赋值,r,data.table,R,Data.table,我想按名称从data.table的多个列中减去向量。我使用了一种点-点的方法,我似乎无法理解为什么上一个赋值不起作用,因为两个表达式单独计算时效果都很好。我附上了一个可复制的例子,应该可以清楚地说明这个问题 dt <- data.table("a_x" = rnorm(10), "b_x" = rnorm(10), "a_y" = rnorm(10), "b_y" = rnorm(10), "d" =
dt <- data.table("a_x" = rnorm(10),
"b_x" = rnorm(10),
"a_y" = rnorm(10),
"b_y" = rnorm(10),
"d" = rnorm(10)
)
XIND <- names(dt) %like% "_x"
MAT <- matrix(dt[,d], nrow = dim(dt[,..XIND])[1], ncol = dim(dt[,..XIND])[2])
dt[,..XIND] <- dt[,..XIND] - MAT
dt我使用了stru子集
作为解决方法,但在我看来,这并不理想
dt[,(str_subset(names(dt),"_x"))] <- dt[,..XIND] - MAT
dt[,(str_子集(名称(dt),“_x”))]这里是另一个我觉得更习惯的选项:
dt <- data.table("a_x" = 1:10, "b_x" = 2:11, "d" = 1:10)
XIND <- grep("_x$", names(dt))
dt[, (XIND) := .SD - d, .SDcols=XIND]
dt您真的应该用GitHub上的data.table
devs提出这个问题。