如何让我的Rscript参数更改目录?
如果我的命令行参数是Rscript test.R“foo1”,我想要setwd("~/foo1")
,但我得到的错误是它无法更改工作目录。
args<-commandArgs(trailingOnly=TRUE)
lambda<args[1]
fileEnd<-args[2]
replicate<-args[3]
directory<-args[4]
setwd(directory)
示例命令行是Rscript test.R 0 1 10 "~/foo1"
试试这个:
# use commandline arguments
args <- commandArgs(TRUE)
# the first argument is the working dir
working.dir <- args[1]
# change the working dir
setwd(file.path("~", working.dir))
由于您未提供脚本的关键部分,因此无法给出具体答案。要简化故障排除,首先要添加要更改目录的完整物理路径。这样可以确保完整路径正常工作。
一般建议。
最结构化的方法是将[.Rprofile]文件放在您将触发Rscript的目录中。当Rscript启动R终端会话时,将读取本地[.Rprofile]。在[.Rprofile]中,您需要添加[setwd('/ yourpath')。如果您只想在开始时设置wd,则假定这是假设。
如果您需要在脚本过程中更改[setwd],您当然可以将它们包含在R文件中。请记住,当[加载/保存]时,Rstudio和R终端的行为会有所不同。当您通过其控制台更改某些内容并直接显示全局环境窗口中的更改时,Rstudio会动态执行操作。
对于从终端触发的Rscript,您必须确保为每个脚本添加[加载/保存] R,以补偿当它不在与Rscript运行会话时丢失环境。
Rstudio和R终端之间的差异行为非常重要,特别是如果您在Rstudio中测试场景并期望它在R-terminal中以相同的方式工作。