2014-02-17 49 views
0

我正在使用mapply(函數,參數),爲一個大的數據集。經過100次迭代後,我需要設置延遲1秒。所以問題是,如果有可能顯示迭代計數或進度欄在mapply(功能,參數) 謝謝迭代計數顯示在mapply

回答

1

不,但如果您切換到使用plyr相應的功能,您可以添加一個進度條到函數調用。

沒有你給我們,我不會找到確切plyr等同的工作量最小,可重複的例子,但它會的m*ply功能之一:

> ls(pos=2,pattern="m.*ply") 
[1] "maply" "mdply" "mlply" "m_ply" 
0

如果你知道總預先迭代次數,你可能只是增加另一個參數mapply作爲迭代計數器。在這個例子中,我加了z。這個例子使命令行睡眠,每3次迭代1秒....

mapply(function(x,y,z) { if(z%%3==0){Sys.sleep(1); 
    cat(paste0("Interation " , z , " ...sleeping\n")) } 
    x*y } ,x=1:10,y=1:10,z=1:10) 
#Interation 3 ...sleeping 
#Interation 6 ...sleeping 
#Interation 9 ...sleeping 
# [1] 1 4 9 16 25 36 49 64 81 100 

如果您需要更有說服力的包裹在system.time()聲明。我得到3.002秒的運行時間。