【问题标题】:Why setting working directory in R Notebook doesn't change working directory in console?为什么在 R Notebook 中设置工作目录不会更改控制台中的工作目录?
【发布时间】:2017-12-02 16:07:07
【问题描述】:

Rstudio states that:

笔记本块中的当前工作目录始终是 包含笔记本 .Rmd 文件的目录。

明白了。但是,如果在笔记本中我们setwd() 到某个东西(“包含笔记本.Rmd 文件的目录”或其他地方,没关系),这不会在控制台中设置工作目录,而只是在笔记本中。

反之亦然,在控制台中设置工作目录并不会更改笔记本中的工作目录——尽管上面对此有所解释。

在控制台和笔记本中设置工作目录的唯一方法似乎是在控制台和笔记本中运行相同的setwd() 调用。

为什么?

有什么方法可以简化这一点,以便在调用 setwd() 后,notbook 和控制台的工作目录自动相同,而不是混淆地拥有两个“并行”工作目录?

人们假设不是只有一个人在笔记本上工作,而是在做“肮脏的工作”并快速检查一个人没有计划保留在控制台中。因此,这种工作目录行为非常令人沮丧。

【问题讨论】:

    标签: r rstudio r-markdown rnotebook


    【解决方案1】:

    rmarkdown 网站对此进行了解释。它建议使用:

    ```{r setup}
        knitr::opts_knit$set(root.dir = normalizePath("path")) 
    ```
    

    其中path代表你要建立的工作目录的路径。

    确保在 setup 块中设置工作目录。

    ======

    我认为,仅更改笔记本中的工作目录而不更改控制台中的工作目录的原因源于将其作为“笔记本”的想法。一旦你开始使用笔记本,一切都在

    code
    output
    

    格式。因此结果显示在代码下方。不再需要控制台。控制台是分开的,也许可以满足您的其他需求。它类似于 Jupyter。那里只有代码和输出单元,没有别的。它没有任何控制台或变量部分。干净整洁。

    【讨论】:

    • 这是有用的信息,但解决了不同的问题。这样做只会更改笔记本中所有块中的工作目录,不会更改控制台中的工作目录,这是我想知道的
    • 关于这个答案需要注意的一点是,从您引用的文档中 还要注意,与 knitr 一样,root.dir 块选项仅适用于块。这意味着如果您更改块中的 wd 并读取另一个使用相对路径的脚本,R 会处理来自 .Rmd 文件目录的那些相对路径。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 2010-10-30
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 2021-08-03
    • 1970-01-01
    相关资源
    最近更新 更多