如何从R标记块设置RStudio R控制台工作目录

如何从R标记块设置RStudio R控制台工作目录,r,r-markdown,rstudio,R,R Markdown,Rstudio,我正在尝试使用rmds和Git使工作流尽可能简单。在这里,新的rmd文件和对旧文件的更新通过RStudioShell使用的Git提供 问题在于RStudio中单个rmd文件和R控制台之间的工作目录不同。默认情况下,使用Git的shell打开到R控制台的工作目录。但是,默认情况下,rmd文件在其所在的文件夹中工作,该文件夹必然与R控制台工作目录不同 我知道在一个rmd文件(如下)中设置所有单元格的工作目录的解决方案,但这不会更改R控制台的工作目录,只会更改块 knitr::opts_knit$se

我正在尝试使用rmds和Git使工作流尽可能简单。在这里,新的rmd文件和对旧文件的更新通过RStudioShell使用的Git提供

问题在于RStudio中单个rmd文件和R控制台之间的工作目录不同。默认情况下,使用Git的shell打开到R控制台的工作目录。但是,默认情况下,rmd文件在其所在的文件夹中工作,该文件夹必然与R控制台工作目录不同

我知道在一个rmd文件(如下)中设置所有单元格的工作目录的解决方案,但这不会更改R控制台的工作目录,只会更改块

knitr::opts_knit$set(root.dir = "path/to/desired/wd")

因此,我想问是否有人知道强制R控制台工作目录与rmd工作目录匹配的方法。理想情况下,这将在rmd单元内完成,执行一个单元将负责自动匹配工作目录。

使工作流万无一失需要不接触工作目录!RMarkdown通过重置对工作目录的任何更改来强制执行此操作。它还运行在与R控制台不同的独立会话中。因此,唯一简单的方法是不依赖代码中的当前工作目录。我发现将RStudio项目与
此处
包结合使用非常有用。当
Rmd
位于项目内部时,您可以使用
here::here()
参考项目内部相对于项目根文件夹的数据,请参阅。感谢您的评论;我的问题可能写得不好。关于数据,我确实使用rmd隔离会话工作目录和数据文件的相对路径。我的问题是,当一个rmd文件在RStudio中打开时,用户打开shell,shell位于与rmd不同的目录中。然后,如果用户打开rmd,他们可能会认为shell在同一个目录中,然后不假思索地执行git拉取。但是,如果shell与rmd不在同一目录中,则拉取将失败。这可能已经令人毛骨悚然了,但知道这一点会很有趣。