我见过很多与在markdown文件中设置工作目录有关的线程,但是没有什么能完全满足我的特定需求。
我的团队正在为我们的Rstudio工作使用共享文件夹结构,看起来像
W:r/dev/
W:r/qat/
W:r/prod/
这些文件夹(对应于开发,质量保证测试和生产)包含我们将在其间迁移工作文件(通常为dev -> qat -> prod
)的环境。
该文档需要一个文档所属的环境。例如,prod
环境中的文档需要知道在prod
环境而不是dev
或qat
环境中加载和使用脚本。
由于我们正在开发许多文档并执行频繁的迁移,因此在迁移每个文档后手动在每个文档中设置环境对于我们来说是站不住脚且不明智的。需要一种算法方法。
这(通过某种方式)是通过确定文档序言中的环境来实现的:
dir <- gsub(x= getwd(), pattern = "(.:/r/)(.*)",replacement = "\\1")
envir <- gsub(x= getwd(), pattern = "(.:/r/)(\\w+)/(.*)",replacement = "\\2")
这对于与项目关联的html_document
类型的文档和与项目无关但{em> not 对于{与项目没有关联的{1}}。
是否存在一种适用于所有文档类型的算法解决方案,而不管它们作为项目/非项目元素的状态如何?
更新
所以我注意到了一些奇怪的行为:文件夹中有一个R Markdown文档
html_notebook
html_document
为其返回W:r/dev/report/
的(这是不典型的,因为该文件夹中的所有其他文档在相同的上下文中均返回getwd()
)。
如果我复制文档中的所有内容并将其粘贴到新文档中,则此文档现在将按预期方式工作并在此上下文中返回W:r/
。如果我删除了原始文件,然后重命名了新创建的文件,使其与原始文件具有相同的名称,则这种奇怪的行为再次发生(即,它返回到返回W:r/dev/report/
)。
这使我认为该文件被列出了某个地方(也许是一个恶意项目?),这告诉Rstudio将此工作目录与该文件相关联。如何确定是否是这种情况?此文件夹或此路径中的任何文件夹中都没有项目。