为什么与丢弃结果的plyr接口与%foreach%不兼容?

时间:2012-01-19 18:51:50

标签: r plyr domc

我正在编写一个基于plyr的脚本来读取位于不同目录中的文件的输入,处理该输入,然后将输出写入其他位置。由于我有很多输入,因此将doMC d_ply 一起使用是有意义的,但我很惊讶地发现一些plyr函数不接受.parallel参数!

快速查看plyr documentation确认没有任何处理输出的函数(例如 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元组中指定的每个文件,处理每个文件的内容,并将这些内容合并到一个输出数据帧中,并写入另一个目录。

然而,当我尝试测试时:

d_ply(input_files, c("ImageFiles","ShapeFiles", "FociFiles"), merge_files, .parallel=TRUE)

我遇到了这个错误:

Error in .fun(.data[[i]], ...) : unused argument(s) (.parallel = TRUE)

提前感谢任何有启发性的答案!

1 个答案:

答案 0 :(得分:0)

当前_ply系列函数接受parallel参数,请参见下面的a_ply文档摘录:

  

拆分数组,应用函数并丢弃结果

     

说明

     

对于数组的每个切片,应用函数并舍弃结果

     

用法

     

a_ply(.data,.margins,.fun = NULL,...,.expand = TRUE,.progress =   “ none”,。inform = FALSE,.print = FALSE,.parallel = FALSE,.paropts   = NULL)   ...

     

参数

     

.parallel如果为TRUE,则使用   由foreach提供的并行后端   ...