【发布时间】: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