【问题标题】:Is it possible to copy one (or 2, or 3) code chunks from one R Markdown document to another R Markdown document without copy/pasting?是否可以在不复制/粘贴的情况下将一个(或 2 个或 3 个)代码块从一个 R Markdown 文档复制到另一个 R Markdown 文档?
【发布时间】:2021-12-30 18:05:36
【问题描述】:

我读过以前问过类似的问题hereherehere(等等)。

很遗憾,为这些问题提供的解决方案似乎都无法解决我的问题。

我尝试了@bryanshallowayhere写的函数,但没有得到想要的结果。

有关更多上下文,我正在使用 R Markdown 工作流程制作科学手稿。我在一个笔记本上执行 EDA,然后回来在另一个笔记本上写手稿。我导入数据、整理数据、创建表格,并在 EDA 笔记本中进行一些基本的可视化,并包含叙述性文本(主要是为我自己)。

然后我创建一个单独的笔记本来写手稿。为了保持它的可重复性,我想包括 EDA 中关于数据导入、整理和整理的所有步骤,但是我不需要随之而来的评论。此外,我可能想要一些(但绝对不是全部)我在 EDA 期间创建的表格和基本可视化,但我需要大量构建它们以准备发布。

我当前的工作流程只是复制和粘贴相关的代码块,然后在必要的地方添加表格和图形(即,为 ggplot 添加标签和标题)。

有没有办法将这些单独的代码块从一个 R Markdown 文件/R Notebook“源”到另一个?也许使用 knit_child (但不将整个 R Markdown 文件带入当前父文件)?

我想避免将所需的代码块复制到单独的 R 脚本中。

谢谢!

【问题讨论】:

  • 嗨,这应该很简单,使用 knitr::purl() 函数然后粘贴到 rmd (基本上创建一个反向 purl 函数)(它的 spin() )
  • 为什么不用你共享的块创建一个单独的 Rmd 并使用 child=file/path/RMd 选项

标签: r r-markdown knitr


【解决方案1】:

knitr purl 和 spin 非常有可能:

好吧,假设这是您的初始 Rmarkdown 报告: 调用文件report1.Rmd


    ---
    title: Use `purl()` to extract R code
    ---
    
    The function `knitr::purl()` extracts R code chunks from
    a **knitr** document and save the code to an R script.
    
    Below is a simple chunk:
    
    ```{r, simple, echo=TRUE}
    1 + 1
    ```
    
    Inline R expressions like `r 2 * pi` are ignored by default.
    
    If you do not want certain code chunks to be extracted,
    you can set the chunk option `purl = FALSE`, e.g., 
    
    ```{r, ignored, purl=FALSE}
    x = rnorm(1000)
    ```

然后你去控制台并 purl 文件:

> knitr::purl("report1.Rmd")

这会在您所在的同一目录中创建一个名为 report1.R 的 R 文件, 只有不是 purl=false 的块。 它是一个简单的 R 脚本,如下所示:

## ---- simple, echo=TRUE----------------------------------------------------------------------------
1 + 1


为了安全起见,让我们重命名文件:

> file.rename("report1.R", "report_new.R")

最后让我们把它转回report_new.Rmd:

> knitr::spin("report_new.R", format = "Rmd", knit=F)

这会为您提供一个名为 report_new.Rmd 的新 Rmd 文件,其中仅包含相关块,没有其他内容

    ```{r simple, echo=TRUE}
    1 + 1 
    ```
猜你喜欢
  • 1970-01-01
  • 2023-03-03
  • 2019-05-28
  • 1970-01-01
  • 1970-01-01
  • 2014-09-22
  • 2012-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多