如何通过shell从父目录中获取R文件?

时间:2015-04-30 21:08:14

标签: r shell

我能够从IDE(Rstudio)中获取R脚本,但不能从命令行调用中获取。有没有办法在不提供完整路径的情况下做到这一点?

我想要源的文件位于父目录中。

这有效:

source('../myfile.R')  #in a call from Rstudio

然而,这并不是:

>  Rscript filethatsources_myfile.R

Error in file(filename, "r", encoding = encoding) : 
  cannot open the connection
Calls: source -> file
In addition: Warning message:
In file(filename, "r", encoding = encoding) :
  cannot open file '../myfile.R': No such file or directory
Execution halted

这看起来应该很简单,但是......

编辑:我使用GNU bash,版本3.2.53(1)-release(x86_64-apple-darwin13)

1 个答案:

答案 0 :(得分:10)

在R中,相对文件位置始终相对于当前工作目录。您可以像这样显式设置工作目录:

setwd("~/some/location")

设置完成后,您可以获取相对于当前工作目录的源文件。

source("some_script.R")         # In this directory
source("../another_script.R")   # In the parent directory
source("folder/stuff.R")        # In a child directory

不确定您当前的工作目录是什么?您可以通过提交getwd()进行检查。

如果源文件位于(例如)父目录但引用相对于位置的文件,该怎么办?使用chdir=中的source选项:

source("../another_script.R", chdir = TRUE)

这会在源评估期间临时将工作目录更改为包含源文件的目录。完成后,您的工作目录将恢复为运行source之前的状态。