gpt4 book ai didi

r - Rmarkdown 文档中的源嵌套 R 文件

转载 作者:行者123 更新时间:2023-12-04 09:40:45 25 4
gpt4 key购买 nike

我正在写 Rmd报告一些 R代码块,很明显。我的代码结构如下:

  • 一个 functions.R自定义函数脚本
  • DataDependency.R用于加载包和我的数据的脚本,这已经是 functions.R 的来源正是这些任务
  • 一些 analysis.R脚本采购DataDependency.R
  • 更多 furtheranalyis.R采购 analysis.R ,从此我不必多次写一些步骤

  • 因此,我非常依赖以嵌套方式获取源文件的函数。但是,我无法在 RMarkdown 中完成此操作这每次都会给我错误(见下文)。是我太笨了还是缺少这个功能?!到目前为止,所有尝试都导致错误。

    我看到的有关该主题的其他问题仅包括 .Rmd 的采购。在 .Rmd 内文件( here )和 source() 之间的区别和 read_chunk() ( here)。两者都没有回答我的问题。

    我已经尝试确保确实是嵌套采购导致了错误。所以这是一个最小的工作示例:

    MWE

    文件 mweA.R
    x = 1:10

    和文件 mweB.R
    source("./mweA.R")
    y = x * x

    现在,在我的 .Rmd文件我只想加载文件 B (或者如果我必须加载两者),然后继续它:
    ```{r}
    source("./mweB.R")
    plot(y ~ x)
    ```

    即使我这样做:
    ```{r}
    source("./mweA.R")
    source("./mweB.R")
    plot(y ~ x)
    ```

    出现同样的错误,即:
    Error in file(filename, "r", encoding = encoding) : cannot open the connection Calls: <Anonymous> ... source -> withVisible -> eval -> source -> file Execution halted

    请注意,如果我只是执行 source("./mweA.R"),我不会收到错误。或来源任何其他非依赖 R脚本。

    希望您必须在 block 中指定一个(或多或少) secret 参数来解决所有这些问题。我真的很难使用 Rmarkdown 的代码块,而且我通常不清楚错误是什么。这主要是让我无法从 latex 切换。至 RMarkdown ...

    最佳答案

    您遇到的问题与 knitr 无关或者能够正确嵌套文档,但它是 R 项目的产品 "working directory insanity"一个面对rmarkdown将相对于文件目录而不是项目根目录编织文档。这会导致不同的相对路径,具体取决于文档是在项目 session 中运行还是在 knitr 中运行。 session 。

    除了要点,this issue显示了许多解决方法:

    knitr 特定 :

    为所有要评估的 block 设置一个根目录,而不是文档位置。

    opts_knit$set(root.dir = '/Users/username/path_to_project')

    一般案例 :

    使用 rprojroot here (后者是前者的包装),它使用 several criteria确定文件的顶级目录。你不需要使用 RStudio 项目来工作。

    使用 here::here 调用对另一个本地文件的任何引用无论调用它的子目录如何,它将解析到相同的位置。
    source(here("functions.R"))
    source(here("subdirectory", "DataDependency.R"))
    source(here("subdirectory2", "furtheranalyis.R"))

    这可能是一个更好的解决方案,因为它不依赖 knitr选项。或者,您可以设置 root.dir使用 rprojroot 的 block :
    opts_knit$set(root.dir = rprojroot::find_rstudio_root_file())

    前提是您使用的是 RStudio 项目。如果没有,请使用 rprojroot::find_root有一个特定的标准。

    关于r - Rmarkdown 文档中的源嵌套 R 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48684595/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com