Considérons cet exemple minimal de RMarkdown, enregistré dans le fichier test.rmd
:
```{r}
foo <- "bar"
```
Si vous rendez ce fichier avec rmarkdown::render("test.rmd")
l'objet foo
se trouveront dans votre environnement global :
> foo
Error: object 'foo' not found
> rmarkdown::render("test.rmd")
[...]
Output created: test.html
> foo
[1] "bar"
>
De même, si foo
ont été définis dans l'environnement global, il sera modifié :
> foo <- "baz"
> rmarkdown::render("test.rmd")
[...]
Output created: test.html
> foo
[1] "bar"
Jusqu'à présent, tout va bien.
Cependant, pour des raisons qui me sont propres, je veux envelopper une autre fonction autour de render()
par exemple
myrender <- function(f) render(f, output_format="html_document")
Maintenant, quand j'appelle myrender("test.rmd")
le foo
est exportée vers l'environnement parent, dans ce cas, vers l'environnement au sein de myrender
et je ne peux plus y accéder depuis l'environnement global :
> myrender("test.rmd")
[...]
Output created: test.html
> foo
Error: object 'foo' not found
Bien qu'il s'agisse du comportement attendu, je souhaiterais néanmoins que l'option render
pour modifier le mondial l'environnement. Comment y parvenir ?