r - 为什么 knitr 不尊重 RStudio 项目细节?

标签 r rstudio knitr

在所有其他情况下,当我在 RStudio 项目中工作时,我可以在脚本中进行相对于项目根目录的引用。所以我可以,例如,dfX = read.csv("Data/somefile.csv"),其中文件夹 Data 是相对于我的项目根目录的。

knitr block 中的相同代码找不到该文件。我猜这是因为 knitr 创建了一堆临时目录,它需要相对于文件位置进行引用。有没有一种简单的方法可以改变这种行为?显然,我不想将整个路径添加到项目文件夹——我知道我可以使用 knitr::opts_knit$set(root.dir = rootPath) 轻松完成此操作。这完全破坏了跨机器和操作系统的可维护性。


编辑: 这似乎与 this question 密切相关.

最佳答案

大概你知道调用'knit'时包目录的路径,那么怎么样:

ENV <- new.env()
assign("workingDirectory", getcwd(), envir = ENV)
knitr::knit(...,
            # THE ENVIRONMENT IN WHICH THE CODE CHUNKS ARE TO BE EVALUATED
            envir=ENV)

然后在你的 rmd 文件中你可以做:

```{r]  print(workingDirectory)```

如果您正在搜索当前安装的位置,您可以使用:

PATH = NULL
for(libPath in .libPaths())
    if('myPackage' %in% list.dirs(libPath,FALSE,FALSE)){
        PATH = file.path(libPath,'myPackage')
    }

if(is.null(PATH))
    stop('could not find package directory') 

ENV <- new.env()
assign("workingDirectory", PATH, envir = ENV)
knitr::knit(...,
            # THE ENVIRONMENT IN WHICH THE CODE CHUNKS ARE TO BE EVALUATED
            envir=ENV)

关于r - 为什么 knitr 不尊重 RStudio 项目细节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28524914/

相关文章:

r - 如何在ggplot中实现绝对百分比?

r - 编织为 PDF 时限制 Rstudio (3.1.1) 中函数的输出

c - R 如何提取动态库中的函数定义

r - 如何在 R 中使用正则表达式转义或清理斜线?

r - 在评估(替代(列表(...)), `_data`,parent.frame()): NAs introduced by coercion

r - RStudio Shiny 中绘图的比例和大小

r - Packrat损坏R功能时出现问题

rstudio - 使用 R markdown 编织 Word .doc 时将表格标题放在顶部

RStudio-如何生成内联 r 结果?

r - knitr - 设置 block 选项*外部*文档?