我想运行在一个特定的时间,我需要一个R代码里面。 而且过程结束后,我要终止R对话。
如果代码是如下,
tm<-Sys.time()
write.table(tm,file='OUT.TXT', sep='\t');
quit(save = "no")
我应该怎么做才能运行在“2012-04-18 17时25分40秒”这个代码。 我需要你的帮助。 提前致谢。
我想运行在一个特定的时间,我需要一个R代码里面。 而且过程结束后,我要终止R对话。
如果代码是如下,
tm<-Sys.time()
write.table(tm,file='OUT.TXT', sep='\t');
quit(save = "no")
我应该怎么做才能运行在“2012-04-18 17时25分40秒”这个代码。 我需要你的帮助。 提前致谢。
这是最容易使用的任务计划程序的Windows,或cron作业 Linux下。 在那里,你可以指定要在您指定的特定时间运行的命令或程序。 我绝对不会推荐的R脚本,如:
time_to_run = as.POSIXct("2012-04-18 17:25:40")
while(TRUE) {
Sys.sleep(1)
if(Sys.time == time_to_run) {
## run some code
}
}
如果不知为何,你不能使用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
}
}
}