web-dev-qa-db-fra.com

Inclure le code d'un script R externe, exécuter, afficher à la fois le code et la sortie

Est-il possible d'inclure du code à partir d'un script R externe dans un .Rmd et d'exécuter simultanément le code, d'afficher le code et d'afficher ses résultats dans le fichier .HTML de sortie? Par exemple, si j'ai

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

dans external.R. Dans le document de sortie, je veux voir le code ci-dessus avec le résultat de z, c'est-à-dire 4. Essentiellement, je veux l'équivalent de ce qui se passerait si je copiais/collais ce qui était au-dessus dans un bloc R. Donc je veux

```{r}
some.library::some.function("external.R")
```

être l'équivalent de

```{r}
x <- 1
y <- 3
z <- x + y
z
```

Dans le fichier HTML de sortie. J'ai essayé des choses comme knitr::read_chunk('external.R) et source('external.R) `, Mais celles-ci n'affichent pas le code. Suis-je en train de manquer quelque chose de simple?


MODIFIER

J'ai trouvé que source('external.R', echo = TRUE) produira ce que je demande, mais chaque ligne du code/résultat affiché de la sortie est précédée de ##. Est-il possible de le faire ressembler à ce qu'il serait si le code était simplement copié/collé dans un morceau dans le .Rmd?

17
haff

Bien que le réponse acceptée fournisse une solution simple et fonctionnelle, je pense que la façon la plus idiomatique de le faire (sans avoir à modifier le script externe du tout) est d'utiliser le chunk option code pour définir le contenu de external.R comme code de morceau:

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

Il existe une autre façon de le faire, il ressemble exactement à la présence du code dans le fichier de démarque.

Votre external.R fichier:

## @knitr answer
x <- 1
y <- 3
z <- x + y
z

Votre fichier Rmarkdown:

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

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

```{r}
<<answer>>
```

Cela produit: enter image description here

9
spadarian

Vous pouvez définir comment = NA dans vos options de bloc de code.

Exemple:

---
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)
```

Cela produit

enter image description here

7
Maurits Evers