繁体   English   中英

有没有办法通过 Windows 命令行在 Rstudio* 内运行脚本?

[英]Is there a way of running a script *within Rstudio* via windows command line?

我想设置一个计划任务以在启动时运行一个脚本,该脚本通过 rstudio 的作业启动一组 API。 我尝试通过命令“R path/to/job_script.R”在powershell中运行它,但得到以下错误:

Error in check_available() :
  You must run this from the RStudio main session.

所以看来这必须在 Rstudio 中运行。 我想知道有没有办法告诉 rstudio 打开并设置这个脚本运行? 尝试“rstudio path/to/script.R 只会在 rstudio 中打开脚本,但不会实际运行它。

我知道我可以将每个 api 设置为通过单独的 R 脚本启动,但这会使监控成为一场噩梦,因为我必须查看 10 个不同的 r 窗口而不是单个 rstudio 窗口。

编辑:评论似乎误解了我想要实现的目标。 我特别想通过Rstudio 的新工作功能的多个实例来启动一套工具。 从 cmd 运行 r 脚本不足以实现这一点,因为我希望一个地方能够查看我所有工具上的日志等。

我最终想通了。 诀窍是将您的作业脚本放在 .Rproj 的 .Rprofile 中。 然后使用 rstudioapi 包设置项目启动的钩子。 这是我的 .Rprofile 的粗略骨架:

setHook("rstudio.sessionInit", function(newSession) {
  if (newSession) {
    apis = list(
      list(
        name = "api1",
        host = "<server_ip>",
        port = "1111",
        wd = "path/to/working_dir1"
      ),
      list(
        name = "api2",
        host = "<server_ip>",
        port = "1112",
        wd = "path/to/working_dir2"
      ),
    )
    
    message("Launching All APIs")
    
    for (api in apis) {
      #all my projects have a run_api.R file at their root:
      #might be cleaner to just plumb from here directly?
      job::job({
        source(file.path(root_dir, app[["dir"]], "run_api.R"))
      },
      opts = options(
        host = api$host,
        port = api$port,
        wd = api$wd
      )),
      title = app[["name"]])


    }
    
  }, action = "append")

这结合了 rstudioapi 包和作业包功能,可用于启动闪亮的应用程序、管道工 api 等。

现在,我可以在 Windows 中设置计划任务,通过 cmd 行通过单个 rstudio 会话设置所有这些 api 在启动时运行:

"C:\Program Files\RStudio\bin\rstudio.exe" "path\to\project\runAPIs.Rproj"

最后,我通过 rstudio 作业选项卡对我的所有应用程序/api 进行了非常漂亮的高级显示:

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM