我有执行大量汇总的代码,需要很长时间才能运行。
例如:
library(dplyr)
df <- data.frame(Letter = letters, Num = c(1 : (26*10) ))
for (x in 1:10000){
df_sum_Tot = summarise(df, Sum_Num = sum(Num) )
df_sum_Letter = summarise(df, Sum_Num = sum(Num) , .by = Letter )
}
是否有更有效的替代方案来总结我可以用来加快速度?
如果您正在处理数千个不同的数据集,您可以将它们全部放入一个列表中并使用
lapply
来汇总它们,而不是使用 for
循环。
其他软件包的汇总效率也比
dplyr
高效得多,尤其是对于大型数据集。例如,data.table
或 collapse
:
# Assuming datasets is your list of all your data.frames:
# Using data.table
library(data.table)
results <- lapply(datasets, function(df) {
setDT(df)
df_sum_Tot <- df[, .(Sum_Num = sum(Num))]
df_sum_Letter <- df[, .(Sum_Num = sum(Num)), by = Letter]
list(Total = df_sum_Tot, ByLetter = df_sum_Letter)
})
# Using collapse:
library(collapse)
results <- lapply(datasets, function(df) {
df <- as.data.table(df)
df_sum_Tot <- collap(df, Sum_Num = fsum(Num))
df_sum_Letter <- collap(df, Sum_Num = fsum(Num), by = "Letter")
list(Total = df_sum_Tot, ByLetter = df_sum_Letter)
})