/R
、/vignettes
、/data
等等。在我位于 /vignettes
的一个 Rmd 文档中,我调用了位于 /R
中的脚本。在这个脚本中,我使用 read.csv()
来加载一个位于 inst/extdata/
的文件。现在的问题是,在 Rmd 文件中默认的工作目录是该文件所在的目录。让我们称其为
/Users/Me/Docs/Proj/vignettes
。然而,为了使 R 脚本能够运行,需要将工作目录设置为项目的主目录(/Users/Me/Docs/Proj
)。我尝试使用
knitr::opts_chunk$set(root.dir = normalizePath("..")
在 Rmd 文件中更改工作目录。然而,显然这并没有改变工作目录,因为如果我在此之后调用 getwd()
,输出仍然是/Users/Me/Docs/Proj/vignettes
,而 knitr::chunk_opts$get("root_dir")
返回/Users/Me/Docs/Proj
。
这里有一个最小化的 Rmd 文件示例:
```{r}
getwd() # returns 'Users/Me/Docs/Proj/vignettes'
knitr::opts_chunk$set(root.dir = normalizePath("..")) # should change the working directory to 'Users/Me/Docs/Proj'
getwd() # again returns 'Users/Me/Docs/Proj/vignettes'
knitr::opts_chunk$get("root.dir") # returns 'Users/Me/Docs/Proj'
```
我正在使用RStudio版本0.99.435。下面是我的会话信息:
R version 3.2.0 (2015-04-16)
Platform: x86_64-apple-darwin14.3.0 (64-bit)
Running under: OS X 10.10.3 (Yosemite)
locale:
[1] de_DE.UTF-8/de_DE.UTF-8/de_DE.UTF-8/C/de_DE.UTF-8/de_DE.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] htmltools_0.2.6 tools_3.2.0 yaml_2.1.13 rmarkdown_0.6.1 digest_0.6.8
非常感谢您提供的任何帮助。如果您需要更多信息,请在问题下发表评论。提前致谢!
setwd()
函数呢? - Stibuknitr::knit
的文档中可以得知:"不建议在代码块中通过 'setwd()' 更改工作目录,因为这可能会导致可怕的后果(例如图形和缓存文件可能被写入错误的位置)。如果您确实使用 'setwd()',请注意,'knitr' 将始终将工作目录还原为原始目录。" - Thomas Neitmann