有几篇与这个主题相关的帖子,但这些解决方案(类似的东西source(.., chdir=TRUE)
)似乎都不适合我。我需要一个 r 脚本,它可以识别其目录并将 R 工作目录设置为此使用setwd()
. 换句话说,脚本需要将 R 工作目录设置为存储脚本的目录。在附近的目录中也有多个脚本副本。IE
"../CCurtisModelData/run1/myscript.r"
"../CCurtisModelData/run2/myscript.r"
"../CCurtisModelData/run3/myscript.r"
因此,如果 myscript 从 run3 执行,则需要确定它在 run3 中。这段代码需要放在脚本的开头,这样我就可以设置工作目录并使用相对路径加载数据。
我不能使用 R 包。
我无法重命名 myscipt 即 myscript1.r。
我的脚本是从包含在"../CCurtisModelData/run1" "../CCurtisModelData/run2" "../CCurtisModelData/run3"
.
批处理文件看起来像这样。脚本的路径是相对的。
"C:\Users\ccurtis11\Documents\R\R-3.0.1\bin\x64\R.exe" CMD BATCH "myscript.r" "myscript.r.rout"
我知道我应该使用Rscript
,但我首先使用了我的脚本CMD
,我喜欢我可以让它报告一个 .rout 文件。将来我可能会切换到Rscript
。如果切换不能帮助我解决我的具体问题,那么我现在对切换不感兴趣。
我想到的唯一其他可能的选择可能是让批处理文件将目录信息传递给 r 脚本。在与同事协商后,我相当肯定这会奏效。我正在做一些并行处理工作,并让 r 为计算机模型处理一些数据处理。所以我仍然在学习我能摆脱什么。
因此,如果有人可以指导我如何将目录信息从批处理文件传递到 R,那就太好了。
但是,如果有一个解决方案让 r 脚本完成所有工作,那将会更有说服力。
我能得到的最接近的是这个。
filenam=list.files("..",full.names=TRUE,recursive=TRUE,pattern="(myscript.r)")
setwd(dirname(filenam))
问题在于它找到 myscript.r 的所有副本并返回第一个,即“../run1/myscript.r”
感谢您的专业人士提出的任何想法。