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