0

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

4

2 回答 2

1

不,但是如果您切换到使用相应的函数,plyr您可以在函数调用中添加一个进度条。

如果没有你给我们一个最小的、可重复的例子,我不会去寻找确切的plyr等价物,但它将是m*ply功能之一:

> ls(pos=2,pattern="m.*ply")
[1] "maply" "mdply" "mlply" "m_ply"
于 2014-02-17T14:40:54.793 回答
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 秒。

于 2014-02-17T15:04:50.883 回答