我目前有一个for循环,如下所示,并没有像我希望的那样快。
library(dplyr)
DF<-data.frame(Name=c('Bob','Joe','Sally')) #etc
PrimaryResult <- Function1(DF)
ResultsDF<-Function2(PrimaryResult)
for(i in 1:9)
{
Filtered<-filter(DF,Name!=PrimaryResult[i,2])
NextResult <- Function1(Filtered)
ResultsDF<-rbind(ResultsDF,Function2(NextResult))
}
代码获取Function1的初始结果(名称列表)并再次尝试,初始结果中的每个名称将被单独排除,以提供替代结果。它们通过Function2作为一行数据帧返回,并附加到结果数据框。
如何让它更快?
答案 0 :(得分:0)
似乎您的主要问题是每次迭代rbind
时函数2的附加结果。这通常很慢,因为你告诉R
在每个时间步重写一堆信息,R
并不真正知道你最终会有多大的矢量。
尝试将结果放入列表向量中。我真的不知道你的功能是做什么的,所以我无法真正帮助这部分。
results_list <- vector("list", 10)
results_list[[1]] <- Function2(PrimaryResult)
for(i in 1:9){
Filtered<-filter(DF,Name!=PrimaryResult[i,2])
NextResult <- Function1(Filtered)
results_list[[i+1]]<-rbind(results_list[[i]],Function2(NextResult))
}
这并不完美,但它应该加快速度。