Включить код из внешнего R-скрипта, запустить, отобразить как код, так и вывод

можно ли включить код из внешнего R-скрипта в an .Rmd и одновременно запустить код, отобразить код и отобразить его результаты в выходных данных .HTML-файл? Например, если у меня

x <- 1
y <- 3
z <- x + y
z

на external.R. В выходном документе я хочу видеть код выше вместе с результатом z, т. е. 4. По сути, я хочу эквивалент того, что произойдет, если я скопирую/вставлю то, что выше, в кусок. Поэтому я хочу

```{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?

3 ответов


хотя принято отвечать обеспечивает простое и рабочее решение, я думаю, что самый идиоматический способ сделать это (без необходимости изменять внешний скрипт вообще) - использовать chunk option code чтобы установить содержимое external.R как кусок кода:

```{r, code = readLines("external.R")}
```

есть другой способ сделать это, так это выглядит ровно как иметь код в файле markdown.

код :

## @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>>
```

что производит: enter image description here


Вы можете установить 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)
```

это производит

enter image description here