50

setwd在 RStudio 的 Rmd 文件中似乎不会更改后续块中的目录。有没有办法永久设置工作目录?

例子:

```{r}
setwd("/tmp")
getwd()
```

```{r}
getwd()
```

输出:

setwd("/tmp")
getwd()
## [1] "/private/tmp"

getwd()
## [1] "/Users/me/src"

这是在 Mac OS 10.8.5 上使用 RStudio 0.97.551、R 版本 3.0.2 和 knitr 版本 1.5。

我希望为所有后续块设置一次目录。

4

2 回答 2

49

请参阅问题 #277和更多背景信息,包作者的评论在这里

您正在寻找的root.dirknitr::opts_knit.

以下将为后续代码块(但不是此块)设置根目录:

```{r setup}
knitr::opts_knit$set(root.dir = '/tmp')
```

编辑:RStudio 1.0.44

render从 RStudio 的最新版本(2016 年 10 月/11 月)开始,knitr 的默认值需要以下代码段:

```{r setup}
knitr::opts_knit$set(root.dir = '/tmp')
```

请参阅 Etienne 对以下版本的评论。

于 2013-11-19T00:10:28.560 回答
2

这是我一直在使用的,在使用 R 项目(.Rproj文件)时它似乎运行良好:

knitr::opts_chunk$set(
    # This should allow Rmarkdown to locate the data
    root.dir = rprojroot::find_rstudio_root_file()
)
于 2020-07-09T17:25:56.863 回答