【问题标题】:How to "source" (not run line by line) an R script from the Windows command line如何从 Windows 命令行“获取”(不逐行运行)R 脚本
【发布时间】:2021-06-10 14:28:01
【问题描述】:

我正在创建一个 R 脚本 myscript.R,它通过 XLConnectpackage 操作一个 excel 文件。 关键是它引用了几个外部文件:excel文件本身和另一个R文件(函数库),所以我需要在脚本的位置设置一个工作目录(这样外部文件的相对路径才能正常工作)。 我在我的脚本中使用以下内容

new_wd <- dirname(sys.frame(1)$ofile)
setwd(new_wd)

当我从我的 RStudio 获取脚本时,它就完成了工作。问题是该脚本将由非程序员、非 Rstudio 用户使用,因此我创建了 .bat 文件(我想将其转换为 .exe 文件)

"C:\Program Files\R\R-4.0.3\bin\Rscript.exe" "C:\my\path\to\myscript.R" 

它逐行执行脚本,但sys.frame(1) 仅在采购时有效。

我该如何解决?

感谢

【问题讨论】:

  • 绝对没有必要,也不明智,创建一个批处理文件,“变成一个.exe”。所有 .exe 都会将实际的批处理文件放入一个可能是随机生成的临时位置,然后从那里作为批处理文件运行它。只需完全按原样使用批处理文件,您就可以专门将其定义为已知位置,从而定义相对于它的路径。您可能还需要考虑到您的每个最终用户不太可能将rscript.exe 安装到同一位置或在其环境中定义它的可能性。
  • 谢谢。我认为这对我的最终用户来说会更容易。现在我看到了你告诉我的关于 .bat 位置的相对路径。

标签: r windows batch-file rscript


【解决方案1】:

我找到了一个解决方案,它可以正常工作。 从CMD 命令行或.bat 文件中,可以将参数-e 添加到命令中,以便您可以使用R 语言。

absolute\path\to\Rscript.exe -e "source('"relative\path\to\myscript.R"')"

它对我有用。 此外,正如 Compo 评论的那样,我认为不需要 .exe 文件,因为 .bat 可以完成这项工作。

【讨论】:

    猜你喜欢
    • 2018-10-05
    • 1970-01-01
    • 2018-09-07
    • 2015-02-04
    • 2016-12-15
    • 1970-01-01
    • 2021-05-17
    相关资源
    最近更新 更多