1

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

4

2 回答 2

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))
于 2014-06-18T20:54:18.213 回答
0

由于您没有提供脚本的关键部分,因此无法给您具体的答案。为了简化故障排除,首先将完整的物理路径添加到要更改的目录中。这是为了确保完整路径有效。

一般建议。

最结构化的方法是将 [.Rprofile] 文件放在您将触发 Rscript 的目录中。当 Rscript 启动 R 终端会话时,将读取本地 [.Rprofile]。在 [.Rprofile] 中,您需要添加 [setwd('/yourpath')。如果您只想在开始时设置 wd,这是假定的。

如果您需要在脚本过程中更改 [setwd],您当然可以将它们包含在 R 文件中。请记住,Rstudio 和 R 终端在 [加载/保存] 时的行为不同。当您通过其控制台更改某些内容并直接在全局环境窗口中显示更改时,Rstudio 会动态执行。

对于从终端触发的 Rscript,您必须确保为每个脚本添加 [load/save] for R 以补偿它在 Rscript 不在运行会话中时丢失环境。

记住 Rstudio 和 R 终端之间的差异行为很重要,特别是如果您在 Rstudio 中测试场景并期望它在 R 终端中以相同的方式工作。

于 2018-11-13T09:29:34.650 回答