私は計算に時間がかかり、その実行をパラレル化しようとしているスクリプトを持っています。適用ファミリを使用してユーザ定義関数を並列化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のコードを並列化することを学ぶために始めていますどのように私は適用のような機能(例えば、サプリ、ラッピー、マッフル)でこれを行うことができます。
私は複数のものを試してみたが、何もこれまで働いた:
mapply(sumPrevious,my.df,my.df$id) # Error in df$id : $ operator is invalid for atomic vectors
'lapply'、' sapply'、 'mapply'は並行して操作を行いません。それらは連続して機能を実行します。 'for loop'を' lapply'に置き換えたいのですか、あるいはあなたのコードを並列に実行したいのですか? – TUSHAr
このために並列化が必要なのは奇妙に思えますか?あなたが達成しようとしているのは、 'my.df $ id'がソートされていると仮定すると、私のための' cumsum(my.df $ value) 'です。 –