Рассмотрим этот минимальный пример RMarkdown, сохраненный в файле test.rmd
:
```{r}
foo <- "bar"
```
Если вы отобразите этот файл с rmarkdown::render("test.rmd")
, объект foo
будет найден в вашей глобальной среде:
> foo
Error: object 'foo' not found
> rmarkdown::render("test.rmd")
[...]
Output created: test.html
> foo
[1] "bar"
>
Аналогично, если в глобальной среде определено foo
, оно будет изменено:
> foo <- "baz"
> rmarkdown::render("test.rmd")
[...]
Output created: test.html
> foo
[1] "bar"
Пока все хорошо.
Однако,по моим собственным причинам я хочу обернуть другую функцию вокруг render()
, например
myrender <- function(f) render(f, output_format="html_document")
Теперь, когда я вызываю myrender("test.rmd")
, переменная foo
экспортируется в родительскую среду, в данном случаек среде в myrender
, и я больше не могу получить к ней доступ из глобальной среды:
> myrender("test.rmd")
[...]
Output created: test.html
> foo
Error: object 'foo' not found
Хотя это ожидаемое поведение, я все же хотел бы, чтобы render
изменил глобальная среда. Как мне этого добиться?