DT中的shift()和list()不适用于rowMeans

时间:2018-11-02 16:40:17

标签: r data.table

尝试计算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。

0 个答案:

没有答案