Включить код из внешнего 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>>
```
Вы можете установить 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)
```
это производит