【问题标题】:In RStudio/RMarkdown, how to setwd?在 RStudio/RMarkdown 中,如何设置 wd?
【发布时间】:2013-12-02 08:30: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。

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

【问题讨论】:

标签: r rstudio r-markdown


【解决方案1】:

这是我一直在使用的,在使用 R Projects(.Rproj 文件)时似乎效果很好:

knitr::opts_chunk$set(
    # This should allow Rmarkdown to locate the data
    root.dir = rprojroot::find_rstudio_root_file()
)

【讨论】:

  • +1 我仍然必须通过setwd 明确设置它,所以setwd(rprojroot::find_rstudio_root_file()) 工作。知道为什么它不能通过您的方式通过knitr::opts_chunk$set 工作吗?
【解决方案2】:

请参阅Issue #277 和更多背景信息,请参阅包作者的 cmets here

您要查找的是knitr::opts_knit 中的root.dir 选项。

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

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

编辑:RStudio 1.0.44

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

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

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

【讨论】:

  • 我需要使用opts_knit 而不是opts_chunk
  • 我还需要使用opts_knit——可能取决于使用的是rmarkdown::render还是knitr::knit,我使用的是前者(这是RStudio的knit HTML按钮的默认设置) 2016)
  • 这适用于 Linux 的 RStudio 1.0.143,但仅适用于 {r setup}... 块。只需调用它{r initialization}... 就会破坏它。
  • 这对我不起作用:运行此行后跟getwd() 表明它对块工作目录没有影响。 Mac OS 10.11.6,R 版本 3.3.1,knitr 版本 1.17。
  • 奇怪...我在 RStudio Windows 1.1.456 中,它似乎想要 chunk 而不是 knit
猜你喜欢
  • 2017-07-08
  • 1970-01-01
  • 2018-10-25
  • 2016-11-05
  • 1970-01-01
  • 2015-06-13
  • 2021-04-02
  • 2017-01-28
  • 2020-04-15
相关资源
最近更新 更多