別のディレクトリにあるファイルから入力を読み取り、その入力を処理し、出力を別の場所に書き込む plyr ベースのスクリプトを作成しています。多くの入力があるので、doMCをd_plyで使用するのは理にかなっていますが、いくつかの plyr 関数が .parallel 引数を受け入れないことに驚きました!
plyr のドキュメントをざっと見てみると、出力を破棄する関数 ( a_ply 、 l_ply 、 d_ply など) が .parallel 引数を受け入れないことがわかります。
d_ply Split data frame, apply function, and discard results.
Usage
d_ply(.data, .variables, .fun = NULL, ..., .progress = "none", .print = FALSE)
私の質問:なぜこれが事実なのか誰か知っていますか?
以下に具体例を示します。plyr への私の呼び出しは次のようになります
d_ply(input_df, c("ImageFiles","ShapeFiles", "FociFiles"), merge_files, .parallel=TRUE)
ここで、input_dfは入力ファイル名を含む 3xN データ フレームです。
input_files[1:3,]
ImageFiles ShapeFiles
1 SQL_1_1_image.CSV SQL_1_1_object.CSV.out
2 SQL_10002_10101_image.CSV SQL_10002_10101_object.CSV.out
3 SQL_1002_1101_image.CSV SQL_1002_1101_object.CSV.out
FociFiles
1 SQL_1_1_object.CSV.out
2 SQL_10002_10101_object.CSV.out
3 SQL_1002_1101_object.CSV.out
関数merge_filesがinput_dfの各行に適用されます。3 タプルで指定された各ファイルを読み取り、各ファイルの内容を処理して、それらの内容を 1 つの出力データ フレームにマージし、別のディレクトリに書き込みます。
しかし、私がテストを試みたとき:
d_ply(input_files, c("ImageFiles","ShapeFiles", "FociFiles"), merge_files, .parallel=TRUE)
このエラーが発生しました:
Error in .fun(.data[[i]], ...) : unused argument(s) (.parallel = TRUE)
啓発的な回答をお寄せいただきありがとうございます。