Почему интерфейсы plyr с отклоненными результатами не совместимы с% foreach%? - PullRequest
0 голосов
/ 19 января 2012

Я пишу сценарий на основе 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-кортеже, обрабатывает содержимое каждого файла и объединяет это содержимое в один фрейм выходных данных, который записывается в другой каталог.

Однако, когда я попытался выполнить тест:

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

Я столкнулся с этой ошибкой:

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

Заранее спасибо за любые полезные ответы!

...