更新时间:2022-12-20 07:48:28
内存管理(即分配和复制)正在用您的方法杀死您。
Memory management, i.e. allocation and copies, is killing you with your approach.
这里是data.table方法,通过引用进行分配:
Here is a data.table approach, which assigns by reference:
library(data.table)
setDT(df)
alloc.col(df, 200) #allocate sufficient columns
#assign rolling means in a loop
for (i in seq_along(ww))
set(df, j = paste0("D", i), value = roll_mean(df[["rawdata"]],
ww[i], na.rm=TRUE, fill=NA))
dfsumm <- df[, lapply(.SD, max, na.rm = TRUE), by = year] #aggregate