如何使用相对路径,相对于Rstudio笔记本中的项目目录?

如何使用相对路径,相对于Rstudio笔记本中的项目目录?,r,rstudio,knitr,rnotebook,setwd,R,Rstudio,Knitr,Rnotebook,Setwd,在R项目中工作时,我喜欢使用相对路径,相对于项目目录的根。几周后,我将RStudio升级到最新版本,其中包括“R笔记本” 笔记本电脑很棒,但我在knitr文档中使用的选项不再有效: opts_knit$set(root.dir="../..") 我希望路径是相对于项目目录的,我不想使用setwd(),因为这在交互模式和编织模式下不会产生相同的结果。此外,我希望能够多次获取整个knitr文档的源代码,并多次更改到相对目录setwd(“…”)会快速导致不需要的路径 正如Jennifer Bryan

在R项目中工作时,我喜欢使用相对路径,相对于项目目录的根。几周后,我将RStudio升级到最新版本,其中包括“R笔记本”

笔记本电脑很棒,但我在knitr文档中使用的选项不再有效:

opts_knit$set(root.dir="../..")
我希望路径是相对于项目目录的,我不想使用
setwd()
,因为这在交互模式和编织模式下不会产生相同的结果。此外,我希望能够多次获取整个knitr文档的源代码,并多次更改到相对目录
setwd(“…”)
会快速导致不需要的路径


正如Jennifer Bryan所建议的,是否有必要?

一般的做法是避免在控制台外使用
setwd
。我通常把路径放在相对于项目目录的位置,如果因为我从错误的目录调用它而失败,那就是我的错(而且很容易纠正)。更健壮的解决方案需要更多的工作,如包或生成文件。此问题涉及相同的问题:。答案链接到建议在“设置”块中使用
knitr::opts_knit$set(root.dir=normalizePath(“…”)
。@alistaire谢谢。假设我在项目的子文件夹
/docs/experience.Rmd
中有一个Rmd文档。为了使用相对于项目目录的路径,我需要在标记文件
experience.Rmd
中设置knitr选项
opts_knit$set(root.dir=“…”)
,以便我可以使用相对于该文档中项目目录的路径。问题是,这种方法不适用于R笔记本电脑。@Yihui似乎放置
opts\u knit$set(root.dir=“…”)
的knitr块必须调用
setup
,才能使此指令起作用。这正常吗?或者正在进行一些缓存,以防止执行第一个块。