2

我正在尝试让函数运行指定的时间,此时我正在尝试使用该system.time函数。我不知道如何定义一个新变量来获取函数运行的累积值,然后将其放入 while 循环中。

timer<-(system.time(simulated_results<-replicate(n=1,simulation(J,10000,FALSE,0.1),simplify="vector"))[3])

print(timer)

while(cumsum(timer)<15){
    print(cumsum(timer)) 
    simulated_results<-replicate(n=10000,simulation(J,10000,FALSE,0.1),simplify="vector")
}

我将不胜感激任何帮助!!!

4

2 回答 2

4

如果要在指定的秒数内运行某些代码,可以尝试以下操作:

start <- as.numeric(Sys.time())
duration <- 5
results <- NULL
while(as.numeric(Sys.time())-start < duration) {
  results <- c(results, replicate(...))
}

当然,您必须更改duration(以秒为单位)的值,并replicate(...)用您的代码替换。

于 2013-01-27T21:02:06.817 回答
0

您可以使用 tryCatch 方法来完成此任务。例如,考虑以下代码

fun_test = function(test_parameter){

  result <- 1+test_parameter #some execution
  return(result)
}
time = 10 #seconds
res <- NULL
tryCatch({
  res <- withTimeout({
    check = fun_test(tsp)
  }, timeout = time)
}, TimeoutException = function(ex) {
  message("Timeout. Skipping.")
})

该程序将运行函数 fun_test 10 秒。如果此时执行成功,则返回结果,否则程序停止。如需更多指导,您可以通过类似 try() 的方式关注此 URL Time out an R command

于 2020-04-16T19:02:12.437 回答