1

我正在编写一个基于 plyr 的脚本来读取位于不同目录中的文件的输入,处理该输入,然后将输出写入不同的位置。由于我有很多输入,因此将doMCd_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 元组中指定的每个文件,处理每个文件的内容,并将这些内容合并到一个输出数据帧中,然后写入另一个目录。

但是,当我尝试测试时:

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

我遇到了这个错误:

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

在此先感谢您提供任何启发性的答案!

4

1 回答 1

0

目前_ply-family 函数接受parallel参数,请参阅以下文档摘录a_ply

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

描述

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

用法

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

论据

.parallel 如果为 TRUE,并行应用函数,使用 foreach 提供的并行后端 ...

于 2019-08-02T06:29:24.530 回答