尝试计算DT中最后4个值的平均值。认为以下方法会起作用:
library(data.table)
dt <- data.table(a = 1:10)
dt[, means := rowMeans(shift(a, 0:3), na.rm = TRUE)]
但它返回'x' must be an array of at least two dimensions
所以我用
进行了测试lags <- paste0("a.lag", c(1,2,3))
dt[, (lags) := shift(a, 1:3)]
dt[, means := rowMeans(c("a", lags), na.rm = TRUE)]
相同错误。令人惊讶的是,以下作品:
dt[, means := rowMeans(.SD, na.rm = TRUE), .SDcols = c("a", lags)]
为什么.SD在这里返回二维数组,而另一个不返回?是错误还是我错过了什么?使用DT 1.11.9。