5

必要な特定の時間にRコードを実行したい。そして、プロセスが終了した後、Rセッションを終了したいと思います。

コードが以下の場合、

tm<-Sys.time()
write.table(tm,file='OUT.TXT', sep='\t');
quit(save = "no")

このコードを「2012-04-1817:25:40」で実行するにはどうすればよいですか。あなたの助けが必要です。前もって感謝します。

4

2 に答える 2

14

Windowsのタスクスケジューラ、またはLinuxではcronジョブを使用するのが最も簡単です。そこで、指定した特定の時間に実行する必要のあるコマンドまたはプログラムを指定できます。

于 2012-04-18T07:29:29.370 に答える
5

どういうわけかcronジョブサービスを使用できず、R内でスケジュールする必要がある場合、次のRコードは、事前に指定されたターゲット時間で実行するために特定の時間待機する方法を示しています。

stop.date.time.1 <- as.POSIXct("2012-12-20 13:45:00 EST") # time of last afternoon execution. 
stop.date.time.2 <- as.POSIXct("2012-12-20 7:45:00 EST") # time of last morning execution.
NOW <- Sys.time()                                        # the current time
lapse.time <- 24 * 60 * 60              # A day's worth of time in Seconds
all.exec.times.1 <- seq(stop.date.time.1, NOW, -lapse.time) # all of afternoon execution times. 
all.exec.times.2 <- seq(stop.date.time.2, NOW, -lapse.time) # all of morning execution times. 
all.exec.times <- sort(c(all.exec.times.1, all.exec.times.2)) # combine all times and sort from recent to future
cat("To execute your code at the following times:\n"); print(all.exec.times)

for (i in seq(length(all.exec.times))) {   # for each target time in the sequence
  ## How long do I have to wait for the next execution from Now.
  wait.time <- difftime(Sys.time(), all.exec.times[i], units="secs") # calc difference in seconds.
  cat("Waiting for", wait.time, "seconds before next execution\n")
  if (wait.time > 0) {
    Sys.sleep(wait.time)   # Wait from Now until the target time arrives (for "wait.time" seconds)
    {
      ## Put your execution code or function call here
    }
  }
}
于 2012-12-17T17:32:43.753 に答える