我有一个脚本需要计算的时间太长,我正在尝试并行化它的执行。
该脚本基本上通过循环遍历数据框的每一行,并执行如下所示的一些计算:
my.df = data.frame(id=1:9,value=11:19)
sumPrevious <- function(df,df.id){
sum(df[df$id<=df.id,"value"])
}
for(i in 1:nrow(my.df)){
print(sumPrevious(my.df,my.df[i,"id"]))
}
我正在学习如何在R中并行化代码,因此我首先想了解如何使用类似于apply的函数(例如sapply、lapply、mapply)来实现。
我尝试了多种方法,但目前为止都没有成功:
mapply(sumPrevious,my.df,my.df$id) # Error in df$id : $ operator is invalid for atomic vectors
lapply
、sapply
和mapply
不会并行执行操作,它们会按顺序运行函数。您是想将for loop
替换为lapply
,还是想要并行运行代码? - tushaRcumsum(my.df$value)
,假设my.df$id
已经排序。 - F. Privé