是否可以在.Rmd中包含来自外部R脚本的代码,并同时运行该代码,显示该代码并将其结果显示在输出.HTML文件中?例如,如果我有
x <- 1
y <- 3
z <- x + y
z
在external.R
中。在输出文档中,我想查看上面的代码以及z
的结果,即4。本质上,我希望获得与我在R块中复制/粘贴上面的代码时所发生的等效操作。所以我要
```{r}
some.library::some.function("external.R")
```
等同于
```{r}
x <- 1
y <- 3
z <- x + y
z
```
在输出的HTML文件中。
我已经尝试过类似knitr::read_chunk('external.R)
和source('external.R
)`的事情,但是这些都不显示代码。我想念一些简单的东西吗?
编辑
我发现source('external.R', echo = TRUE)
会产生我的要求,但是输出的显示代码/结果的每一行都以##
开头。有什么方法可以使它看起来像是将代码简单地复制/粘贴到.Rmd中的块中一样?
答案 0 :(得分:10)
尽管accepted answer提供了一个简单且可行的解决方案,但我认为最惯用的方式(根本无需修改外部脚本)是使用chunk option code
来设置内容external.R
作为组块代码:
```{r, code = readLines("external.R")}
```
答案 1 :(得分:7)
还有另一种方法可以使完全就像在markdown文件中包含代码一样。
您的external.R
文件:
## @knitr answer
x <- 1
y <- 3
z <- x + y
z
您的Rmarkdown文件:
---
title: "Untitled"
output: html_document
---
```{r echo=FALSE}
knitr::read_chunk('external.R')
```
```{r}
<<answer>>
```
答案 2 :(得分:6)