Setting work directory in knitr using opts_chunk$set(root.dir = …) doesn't work
我的R项目的结构类似于具有目录
现在的问题是,默认情况下,Rmd文件中的工作目录是该文件所在的目录。 我们称之为
我尝试使用
这是Rmd文件的最小示例:
1 2 3 4 5 6 | ```{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版本。 这是我的会议信息:
1 2 3 4 5 6 7 8 9 10 11 12 | 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 |
任何帮助,感激不尽。 如果您需要更多信息,请对该问题发表评论。 提前致谢!
它是
如果您有一个带有嵌套子文件夹的R项目,因此.Rproj和.Rmd文件位于不同的文件夹中,则可以在编织过程中使用命令
因此,至少使用以下内容:
1 2 3 4 5 | ```{r setup} knitr::opts_knit$set(root.dir = rprojroot::find_rstudio_root_file()) ``` |
在
另请参阅在R Studio和https://support.rstudio.com/hc/zh-CN/community/posts/220826588-Working-directory-in-R-Notebooks中自动查找当前R项目的路径。
正如Yihui在他的回答中指出的那样,错误只是我使用了
但是,可能值得注意的是,工作目录的更改不影响当前,而仅影响下一个块。所以e。 G。如果要加载相对于新工作目录的数据,请在以下块中执行。
有关通过
尽管Yihui和Tommy已经有一些很棒的答案。我仍然被困在设置工作目录中。所以我想在这里做一个完整的答案。
Knitr’s settings must be set in a chunk before any chunks which rely on those settings to be active. It is recommended to create a knit configuration chunk as the first chunk in a script with cache = FALSE and include = FALSE options set. This chunk must not contain any commands which expect the settings in the configuration chunk to be in effect at the time of execution.
就我而言,
1 2 3 4 5 | ```{r setup, include=FALSE, cache = FALSE} require("knitr") ## setting working directory opts_knit$set(root.dir ="~/Documents/R/Example") ``` |
对我来说,
而
因此,
我在设置块中使用了两个选项:
1 2 3 4 5 6 7 8 9 10 11 12 | ```{r settings, include = FALSE} knitr::opts_chunk$set(echo = FALSE , comment = NA , warning = FALSE , error = FALSE , message = FALSE , tidy = TRUE) knitr::opts_knit$set(root.dir = 'C:/...') ``` |