我正在尝试让函数运行指定的时间,此时我正在尝试使用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")
}
我非常感谢任何帮助!!!
答案 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()