在R中运行指定时间的函数

时间:2013-01-27 20:51:18

标签: r

我正在尝试让函数运行指定的时间,此时我正在尝试使用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")
}

我非常感谢任何帮助!!!

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分: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秒钟。如果这时执行成功,则返回结果,否则程序停止。有关更多指导,您可以遵循此URL Time out an R command via something like try()