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?
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")}
```
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>>
```