迭代计数显示在mapply中

时间:2014-02-17 14:37:45

标签: r mapply

我正在使用mapply(function,args),用于大数据集。经过100次迭代后,我需要设置1秒的延迟。所以问题是是否可以在mapply中显示迭代计数或进度条(函数,args) 感谢

2 个答案:

答案 0 :(得分:1)

不,但如果您切换到使用plyr中的相应功能,则可以在功能调用中添加进度条。

如果没有给我们一个最小的,可重现的例子,我不会努力找到确切的plyr等价物,但它将是m*ply函数之一:

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

答案 1 :(得分: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秒。