如果我理解正确的话,你试图创建一个函数,无论何时在前x秒调用它都会返回1,然后在下一个x秒调用时返回0,然后在接下来的x秒内返回1,等等.经过一段total
时间后,它应该"完成",也许返回-1?
您可以使用以下函数执行此操作,该函数将"创建"具有任何所需间隔的函数:
flipper <- function(interval=10, total = 60) {
t0 <- Sys.time()
function() {
seconds <- round(as.double( difftime(Sys.time(), t0, u = 'secs')))
if(seconds > total)
return(-1) else
return(trunc( 1 + (seconds / interval ) ) %% 2)
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用此功能创建一个在前60秒内每10秒交替0到1之间的功能,并在60秒后返回-1:
> flp <- flipper(10,60)
Run Code Online (Sandbox Code Playgroud)
现在呼叫flp()
将具有您正在寻找的行为,即当您flp()
在接下来的60秒内呼叫时,它将每10秒在1和0之间交替,然后在60秒后它将返回-1.
Sys.sleep
从基地不能解决?
例如:在循环中每隔10次迭代停止10秒:
for (i in 1:100) {
# do something
if ((i %% 10) == 0) {
Sys.sleep(10)
}
}
Run Code Online (Sandbox Code Playgroud)
我还可以建议:
计时器1
library(data.table)
begin.time <- proc.time()
timetaken(begin.time)
Run Code Online (Sandbox Code Playgroud)
计时器2
library(matlab)
tic(gcFirst=FALSE)
toc(echo=TRUE)
Run Code Online (Sandbox Code Playgroud)
两者都是计时器的绝佳选择