Я использую mapply (function, args) для большого набора данных. После 100 итераций мне нужно установить задержку на 1 сек. Поэтому вопрос заключается в том, можно ли показывать количество итераций или индикатор выполнения в mapply (function, args) Спасибоотображение количества итераций в mapply
0
A
ответ
1
Нет, но если вы переключитесь на использование соответствующих функций от plyr
, вы можете добавить индикатор выполнения к вызову функции ,
Без вас дает нам минимальную воспроизводимый пример, я не собираюсь усилий найти точный эквивалент plyr
, но это будет один из m*ply
функций:
> ls(pos=2,pattern="m.*ply")
[1] "maply" "mdply" "mlply" "m_ply"
0
Если вы знаете, общее количество итераций заранее, вы можете просто добавить еще один аргумент в mapply
как счетчик итераций. В этом примере я добавил z
. Этот пример делает сон командной строки в течение 1 секунды каждые 3 итераций ....
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 секунды.