如何持久运行Rscript?
我有一个文件如何持久运行Rscript?,r,R,我有一个文件Timer.R,我想在与交互式R会话不同的进程中执行它 # In Timer.R library(tcltk) z <- function () { cat("Hello you!\n") .id <<- tcl("after", 1000, z) } .id <<- tcl("after", 1000, z) tcl("after", "info", .id) # To get info about this scheduled tas
Timer.R
,我想在与交互式R会话不同的进程中执行它
# In Timer.R
library(tcltk)
z <- function () {
cat("Hello you!\n")
.id <<- tcl("after", 1000, z)
}
.id <<- tcl("after", 1000, z)
tcl("after", "info", .id) # To get info about this scheduled task
tcl("after", "cancel", .id) # To cancel the currently scheduled task
有没有办法让
Timer.R
在后台持续运行?如果将函数定义后的3行粘贴到while(TRUE)
循环中会发生什么?谢谢@Scott,但是我在上面进行了简化,实际的代码要复杂得多,所以我不能只使用while
循环。有更好的办法吗?我不知道。这也是我在任何其他编程语言中使用的方法。是否有一种方法可以分离逻辑,以便将计时器功能放入while(TRUE)
循环?@Scott-hmmm棘手-我实际上将新进程用作从进程,处理异步任务,如流式实时数据。我的交互式R会话将通过套接字连接发出命令,从进程将执行这些命令。但是,由于我可以交互地向从机发出命令,因此必须以持久模式启动从机,以便它可以等待命令。稍微不同的体系结构是,由主机将命令写入文件(或其他堆栈实现),用从机读取命令,然后执行/删除。然后将从机放入cronjob中,每分钟运行一次。
# In interactive session
system("C:/Program Files/R/R-3.0.2/bin/Rscript.exe Test.R", invisible = FALSE)
<Tcl> {R_call 00000000217CD078} timer
<Tcl>
> # Rscript has terminated by this point - timer is never run