我正在尝试获得一组列名称和期间的滚动平均值和总和。我需要对函数进行概括,因为列数和句点数导致笛卡尔积大于1000。到目前为止,我已经设法将period作为参数,但是无法对该列进行设置。
我想要的示例代码:
periods = c(1, 3, 5)
col_names = c(SALES, DROPOUT)
for(period in periods) {
for(col_name in col_names) {
df[, c(
paste0('MEAN_', col_name, '_', period),
paste0('SUM_', col_name, '_', period)
) := list(
rollapply(col_name, width=period, fill=NA, partial=T, align='right', FUN=function(x) mean(x, na.rm=T)),
rollapply(col_name, width=period, fill=NA, partial=T, align='right', FUN=function(x) sum(x, na.rm=T))
)]
}
}
但是以上情况都会导致错误:
Error in sum(x, na.rm = T) : invalid 'type' (character) of argument
它不将col_name识别为在其上运行mean函数的列名。关于如何使列名成为参数的任何提示?