我想监控mapply函数的进度。这个数据由两个列表和一个带有两个参数的函数组成。
如果我使用一个只需要1个参数的函数,我可以使用ldply而不是lapply。(我想把输出rbind.fill到data.frame中)
如果我想用mdply做同样的事情,它不起作用,因为mdply中的函数需要从数据框或数组的列中取值。Mapply采用列表作为输入。
这些plyr应用程序函数非常方便,不仅因为我可以将输出作为data.frame获取,还因为我可以使用进度条。
我知道有pbapply包,但没有mapply版本,也有txtProgressBar函数,但我无法弄清如何将其与mapply一起使用。
我试图创建一个可重现的示例(运行时间约为30秒)
我猜这是个糟糕的例子。我的l1是一个被爬网站的列表(rvest::read_html),我不能将其发送为数据框到mdply。这些列表确实需要是列表。
如果我使用一个只需要1个参数的函数,我可以使用ldply而不是lapply。(我想把输出rbind.fill到data.frame中)
如果我想用mdply做同样的事情,它不起作用,因为mdply中的函数需要从数据框或数组的列中取值。Mapply采用列表作为输入。
这些plyr应用程序函数非常方便,不仅因为我可以将输出作为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