【问题标题】:Changing directories in Rscript在 Rscript 中更改目录
【发布时间】:2014-08-09 07:06:45
【问题描述】:

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

【问题讨论】:

  • 您是否检查过您尝试更改的目录是否存在。你能发布你的代码吗?
  • 此外,在脚本中更改目录不是一个好习惯。
  • @agstudy:完全同意。
  • 为什么不把它们都放在同一个目录下?
  • 在脚本中使用 setwd() 非常好,只要在脚本顶部明确说明任何共享用户都应该使用他们自己的适当目录。

标签: r command-line-arguments directory rscript


【解决方案1】:

试试这个:

# 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))

【讨论】:

    【解决方案2】:

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

    一般建议。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-03-30
      • 2013-06-07
      • 1970-01-01
      • 2016-07-23
      • 2013-07-14
      • 2020-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多