我想監視我的mapply函數的進度。數據由2個列表組成,並且有一個帶有2個參數的函數。進度條和mapply(輸入爲列表)
如果我用一個帶有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
謝謝。問題是現實中的l1是我使用rvest :: read_html獲取的網頁列表。這個列表我不能用作data.frame中的列。我猜這個例子很糟糕。 – Roccer
感謝您的幫助。該函數運行但輸出不是我想要的/我從mapply中得到的。以後我會接受你的答案,就像你通過例子解決了一樣。 – Roccer