gpt4 book ai didi

r - 来自另一个 Rmd 中的 Rmd 文件的源代码

转载 作者:行者123 更新时间:2023-12-02 11:48:25 25 4
gpt4 key购买 nike

我正在尝试使我的代码更加模块化:在一个脚本中加载和清理数据,在另一个脚本中进行分析等。如果我使用 R 脚本,那么调用 source 就很简单了> 在 analysis.R 内的 data_setup.R 上,但我想在 Rmarkdown 文档中记录我为数据设置和分析所做的决定。因此,我尝试编写某种 source_rmd 函数,该函数允许我将代码从 data_setup.Rmd 获取到 analysis.Rmd 中。

到目前为止我尝试过的:

How to source R Markdown file like `source('myfile.r')`?的答案如果存在任何重复的 block 名称,则不起作用(这是一个问题,因为名为 setup 的 block 在 Rstudio 的笔记本处理中具有特殊行为)。 How to combine two RMarkdown (.Rmd) files into a single output?想要组合整个文档,而不仅仅是一个文档中的代码,并且还需要唯一的 block 名称。我已尝试按照 Generate Dynamic R Markdown Blocks 中的建议使用 knit_expand ,但我必须用双大括号中的变量来命名 block ,并且我真的很想要一种方法来使我的合作者也可以轻松使用它。并按照 How to nest knit calls to fix duplicate chunk label errors? 中的建议使用 knit_child仍然给我重复标签错误。

最佳答案

经过进一步搜索,我找到了解决方案。 knitr 中有一个包选项,可以设置它来更改处理重复 block 的行为,在标签后附加一个数字,而不是因错误而失败。请参阅https://github.com/yihui/knitr/issues/957 .

要设置此选项,请使用options(knitr.duplicate.label = 'allow')

为了完整起见,我编写的函数的完整代码是

source_rmd <- function(file, local = FALSE, ...){
options(knitr.duplicate.label = 'allow')

tempR <- tempfile(tmpdir = ".", fileext = ".R")
on.exit(unlink(tempR))
knitr::purl(file, output=tempR, quiet = TRUE)

envir <- globalenv()
source(tempR, local = envir, ...)
}

关于r - 来自另一个 Rmd 中的 Rmd 文件的源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41962434/

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