是否可以使用engine ="bash"在knitr块之间共享变量?

nac*_*cab 7 knitr

像这样的东西,但它不起作用:

```{r examples, engine="bash"}
    export EXAMPLES="example/path"
```

```{r example1, engine="bash"}
    echo $EXAMPLES
```
Run Code Online (Sandbox Code Playgroud)

但这有效:

```{r examples2, engine="bash"}
    export EXAMPLES="example/path"
    echo $EXAMPLES
```
Run Code Online (Sandbox Code Playgroud)

Yih*_*Xie 4

这是一个很好的问题!这也是我真正想要完成但不知道如何去做的事情(如果有人可以帮助我,我很感激)。它不仅适用于,而且适用于、等bash所有其他引擎。目前它不起作用的原因只是通过运行代码,即对于每个代码块,都会打开一个新的引擎会话,因此所有块本质上都在不同的进程中执行。knitrpythonrubyknitrsystem('engine -arg code')

理想情况下,我想要一个能够打开会话并继续侦听新代码的引擎,但我不确定这是否可能。AFAIK,共享变量的唯一方法是将它们写入文件,这显然很尴尬。

  • @nachocab是的,`Sys.setenv()`是你的朋友:https://github.com/yihui/knitr-examples/blob/master/061-bash-variable.md ([来源](https://github .com/yihui/knitr-examples/blob/master/061-bash-variable.Rmd)) (3认同)