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秒間実行します。この時点で実行が成功した場合は結果が返され、そうでない場合はプログラムが停止します。詳細なガイダンスについては、このURLをたどることができます 。try()のようなものを介してRコマンドをタイムアウトします。

于 2020-04-16T19:02:12.437 に答える