Я пишу сценарий на основе 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)
Заранее спасибо за любые полезные ответы!