Я хотел бы следить за ходом моей функции mapply. Данные состоят из 2-х списков и есть функция с 2-мя аргументами.
Если я сделаю что-то подобное с функцией, которая принимает 1 аргумент, я могу использовать ldply вместо lapply. (Я хотел бы rbind.fill вывод в data.frame)
Если я хочу сделать то же самое с mdply, это не сработает, поскольку функция в mdply требует значений, взятых из столбцов фрейма данных или массива. Mapply принимает списки в качестве входных данных.
Эти функции plyr apply удобны не только потому, что я могу получить результат в виде data.frame, но и потому, что могу использовать индикатор выполнения.
Я знаю, что есть пакет pbapply, но нет версии mapply и есть функция txtProgressBar, но я не мог понять, как использовать это с mapply.
Я попытался создать воспроизводимый пример (запуск занимает около 30 секунд)
Думаю, плохой пример. Мой l1 - это список очищенных веб-сайтов (rvest :: read_html), которые я не могу отправить в качестве фрейма данных в mdply. Списки действительно должны быть списками.
mdply <- plyr::mdply
l1 <- as.list(rep("a", 2*10^6+1))
l2 <- as.list(rnorm(-10^6:10^6))
my_func <- function(x, y) {
ab <- paste(x, "b", sep = "_")
ab2 <- paste0(ab, exp(y), sep = "__")
return(ab2)
}
mapply(my_func, x = l1, y = l2)
mdply не работает
mdply(l1, l2, my_func, .progress='text')
Error in do.call(flat, c(args, list(...))) : 'what' must be a function or character string