Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何持久运行Rscript?_R - Fatal编程技术网

如何持久运行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