In RStudio/RMarkdown, how to setwd?

51,991

Solution 1

See Issue #277 and for further background, the package author's comments here

What you are looking for is the root.dir option in knitr::opts_knit.

The following will set the root directory for subsequent code chunks (but not this chunk):

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

EDIT: RStudio 1.0.44

as of RStudio's latest release (Oct/Nov 2016), the following snippet is needed for knitr's render default:

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

see Etienne's comment about versions below.

Solution 2

Here's what I've been using, and it seems to work well when using R Projects (.Rproj files):

knitr::opts_chunk$set(
    # This should allow Rmarkdown to locate the data
    root.dir = rprojroot::find_rstudio_root_file()
)
Share:
51,991
user650654
Author by

user650654

Updated on July 10, 2020

Comments

  • user650654
    user650654 almost 4 years

    setwd in an Rmd file in RStudio does not appear to change the directory in subsequent chunks. Is there a way to set the working directory for good?

    Example:

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

    Output:

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

    This is on Mac OS 10.8.5 using RStudio 0.97.551, R version 3.0.2 and knitr version 1.5.

    I wish to set the directory once for all subsequent chunks.

  • Etienne Low-Décarie
    Etienne Low-Décarie about 10 years
    I needed to use opts_knit instead of opts_chunk
  • arvi1000
    arvi1000 about 8 years
    I also needed to use opts_knit -- may depend on whether one is using rmarkdown::render or knitr::knit, I was using the former (which is the default for RStudio's knit HTML button in 2016)
  • mightypile
    mightypile about 7 years
    This works in RStudio 1.0.143 for linux, but ONLY in the {r setup}... chunk. Just calling it {r initialization}... breaks it.
  • eric_kernfeld
    eric_kernfeld over 6 years
    This doesn't work for me: running this line followed by getwd() shows that it had no effect on the chunk working directory. Mac OS 10.11.6, R version 3.3.1, knitr version 1.17.
  • Hack-R
    Hack-R about 5 years
    Weird... I'm in RStudio Windows 1.1.456 and it seems to want chunk not knit
  • user63230
    user63230 about 3 years
    +1 I still had to explicitly set this via setwd though, so setwd(rprojroot::find_rstudio_root_file()) worked. Any idea why it didnt work via your way through knitr::opts_chunk$set?