RMarkdown 中“源”和显示现有 .R 文件中的代码的命令是什么?

Dan*_*iel 6 r r-markdown

示例:我的 R 脚本名为“code.R”。它生成了一个简单的 y 与 x 的关系图。在 Rmarkdown 中看起来像这样。

    ````{r eval=FALSE}
    ## code in "code.R"
    x = 1:10
    y = 1:10
    plot(x,y)
    ```
Run Code Online (Sandbox Code Playgroud)

对于文档和可重复性,我想创建一个 Rmarkdown 文件,该文件在从 RStudio 编织时读取“code.R”。(有点像LaTex 中的\include{}。)因此,生成的 RMarkdown PDF 应该显示来自“code.R”的 R 代码的未经评估的逐字副本。

最终目标是制作一个 RMarkdown 文件,该文件可以读取数十个 R 文件并将所有 R 代码组合在一个 PDF 中,以供可重复性和将来参考。这将阻止我在每次更改源文件时复制粘贴新的 R 代码。我对在 RMarkdown 中实际运行 R 代码不感兴趣。

解决方案的一部分(但如何?)可能是创建一个块来读取文件并存储读取的文本行和另一个块将这些文本行显示为逐字代码?

````{r eval=FALSE}中是否有现有的内置 RMarkdown 命令或其他选项会产生我想要的结果?你能举个例子吗?

一个更复杂的 Stackoverflow 问题的链接也间接解决了我的问题。

任何指针将不胜感激!

Dan*_*iel 6

解决方法见:http: //yihui.name/knitr/demo/externalization/

使用注释“## ---- input.R”(不带引号)启动 input.R 脚本

使用以下代码制作一个 .Rmd 脚本并编织它。它将在生成的 PDF 中显示 input.R 脚本的内容。

      ---
      output: pdf_document
      ---

      ```{r cache=FALSE, echo=FALSE}
      knitr::read_chunk('input.R')
      ```

      ```{r input.R, eval=FALSE}

      ```
Run Code Online (Sandbox Code Playgroud)