包含来自外部R脚本的代码,运行,显示代码和输出

haf*_*aff 18 r knitr r-markdown

是否可以在.Rmd中包含来自外部R脚本的代码并同时运行代码,显示代码并在输出.HTML文件中显示其结果?例如,如果我有

x <- 1
y <- 3
z <- x + y
z
Run Code Online (Sandbox Code Playgroud)

external.R.在输出文档中,我想看到上面的代码以及结果z,即4.基本上,我想要相当于如果我在R块中复制/粘贴上面的内容会发生什么.所以我想要

```{r}
some.library::some.function("external.R")
```
Run Code Online (Sandbox Code Playgroud)

相当于

```{r}
x <- 1
y <- 3
z <- x + y
z
```
Run Code Online (Sandbox Code Playgroud)

在输出HTML文件中.我试过的东西像knitr::read_chunk('external.R)source('external.R)',但这些不显示的代码.我错过了一些简单的事吗?


编辑

我发现这source('external.R', echo = TRUE)将产生我的要求,但输出显示的代码/结果的每一行都是前缀##.如果代码只是简单地复制/粘贴在.Rmd中的一个块中,任何方式都可以使它看起来像?

CL.*_*CL. 16

虽然接受的答案提供了一个简单而有效的解决方案,但我认为最常用的方法(无需修改外部脚本)是使用chunk选项code将内容设置external.R为块代码:

```{r, code = readLines("external.R")}
```
Run Code Online (Sandbox Code Playgroud)

  • 我认为这将是最终答案(其余两个也是正确答案)。太巧了——我昨天刚写了关于`code`选项:https://yihui.name/en/2018/09/code-appendix/ (2认同)

spa*_*ian 10

有这样做的另一种方式,所以它看起来完全相同就像在降价文件中的代码.

你的external.R档案:

## @knitr answer
x <- 1
y <- 3
z <- x + y
z
Run Code Online (Sandbox Code Playgroud)

你的Rmarkdown文件:

---
title: "Untitled"
output: html_document
---

```{r echo=FALSE}
knitr::read_chunk('external.R')
```

```{r}
<<answer>>
```
Run Code Online (Sandbox Code Playgroud)

这产生: 在此输入图像描述


Mau*_*ers 7

您可以comment = NA在代码中设置块选项.

例:

---
title: "Untitled"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(
    echo = TRUE,
    comment=NA)
```

## Example

```{r}
source("example.R", echo = T, prompt.echo = "", spaced = F)
```
Run Code Online (Sandbox Code Playgroud)

这产生了

在此输入图像描述