如何让我的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"
答案 0 :(得分:0)
试试这个:
# 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))
答案 1 :(得分:0)
由于您没有提供脚本的关键部分,因此无法给出具体答案。为了简化故障排除过程,首先将完整的物理路径添加到要更改的目录中。这样可以确保完整路径有效。
一般建议。
最结构化的方法是将[.Rprofile]文件放在您将触发Rscript的目录中。当Rscript启动R终端会话时,将读取本地[.Rprofile]。在[.Rprofile]中,您需要添加[setwd('/ yourpath')。如果您只是想在开始时设置wd,则假定为这种情况。
如果您需要在脚本执行过程中更改[setwd],则可以将它们包含在R文件中。请记住,尽管Rstudio和R终端在[加载/保存]时表现不同。当您通过Rstudio控制台进行某些更改并在全局环境窗口中直接显示更改时,Rstudio会动态地执行操作。
对于从终端触发的Rscript,您必须确保为每个脚本添加R的[load / save],以补偿当它不在使用Rscript的运行会话中时会丢失环境。
要牢记Rstudio和R终端之间的差异行为,这一点很重要,尤其是如果您在Rstudio中测试场景并期望它在R终端中以相同的方式工作。