r - 仅对数据表中的特定行应用 frollapply

标签 r data.table

假设我有简单的 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/

相关文章:

r - 使用 data.table 列中的丰富对象

r - 将值从宽更改为长 : 1) Group_By, 2) Spread/Dcast

r - 在igraph中按簇折叠图

r - 从 R 中的 Twitter 状态中提取用户

r - 使用 reshape 查找配对事件

r - 消除数据表中选定的行

r - 在 CentOS 6.5 "because mysql-connector-c was not found"上安装 R 包 RMySQL 失败

r - 使用长格式的数据计算基线的变化

r - 错误: package or namespace load failed for ggplot2 and for data.table

r - 转换 data.table 中的*一些*列类