假设我有简单的 DT:
library(data.table)
DT <- data.table(x = 1:20)
我想在 DT 的特定行上应用 frollapply 函数。例如,此代码将函数应用于每一行:
DT[, frollapply(x, n = 10, FUN = function(y) sum(y, na.rm = TRUE))]
但我只想返回 11 和 13,即数字 65 和 85。
我知道我可以在应用frollapply
之后进行子集化,但我会在每一行上执行该函数。
这样的东西不起作用(看起来它是第一个子集并且比应用):
DT[c(11, 13), frollapply(x, n = 10, FUN = function(y) sum(y, na.rm = TRUE))]
最佳答案
滚动函数(apply/sum/mean)的要点正是将该函数应用于整个向量。如果您只需要 2 个值,最简单的方法就是仅请求这些值:
DT[, sapply(c(11, 13), function(i) sum(x[(i-9):i]))]
#[1] 65 85
关于r - 仅对数据表中的特定行应用 frollapply,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71123441/