在Rscript中更改目录

时间:2014-06-18 20:51:24

标签: r command-line-arguments directory rscript

如何让我的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"

2 个答案:

答案 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终端中以相同的方式工作。