我有一個需要太長時間計算的腳本,我試圖將其執行過程並行化。在R中使用應用系列並行化用戶定義的函數
劇本基本上遍歷數據幀的每一行,並執行一些計算,如下圖所示:
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'不會並行執行操作。他們連續運行一個功能。你想僅僅用'lapply'替換'for loop'還是你想並行運行你的代碼? – TUSHAr
你爲此需要並行化似乎很奇怪?假設「my.df $ id」是排序的,你試圖實現的只是'cumsum(my.df $ value)'。 –