首页 > 解决方案 > setwd() 和 getwd() 的问题

问题描述

我正在将 Rmarkdown 用于项目。昨天我更改工作目录没有问题,但是今天,每当我尝试将目录作为我的工作区时,它都没有,就好像它固定在同一个目录上一样。这是控制台以获取更多详细信息

setwd(choose.dir()):工作目录更改为笔记本块内的 C:/Users/Utilisateur/Documents/Etudes/Data/Covid-related/csse_covid_19_daily_reports。当块完成运行时,工作目录将被重置。使用设置块中的 knitr root.dir 选项更改笔记本块的工作目录。

getwd() [1] "C:/Users/Utilisateur/Documents/Etudes/ADES/DM 2"

标签: rr-markdown

解决方案


警告消息的意思是可以在一个块中临时更改您的工作目录,但这不会影响后续块。换句话说,说 R 没有更改您的工作目录是不正确的,它只是为了脚本中的有限位置而这样做。一旦该块完成运行,R 将带您回到保存 .Rmd 文档的工作目录。

不幸的是,您没有指定为什么需要更改工作目录,所以我假设您需要从特定目录读取某些内容,或者编写一些内容。我相信你可能有三种选择:

  1. 您可以将需要访问的文档移动到与脚本相同的工作目录。这在大多数情况下都不是最优的,尤其是在您有很多文档的情况下。
  2. 通过在阅读函数中指定整个路径来阅读您需要阅读的任何内容
  3. 您可能希望通过在初始设置块中使用 root.dir 参数来指定根目录。这将作为:
    knitr::opts_chunk$set(root.dir = 'C:/Users/Utilisateur/Documents/Etudes')

不幸的是,如果文档不在您设置为根目录的文件夹中,您仍然需要在每次需要读取文档时指定路径,但至少通过以相对术语指定路径更容易做到这一点。

一般来说,我的建议是以一种更容易访问的方式组织项目文档。


推荐阅读