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

时间:2012-11-10 23:49:22

标签: knitr

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

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

```{r example1, engine="bash"}
    echo $EXAMPLES
```

然而,这是有效的:

```{r examples2, engine="bash"}
    export EXAMPLES="example/path"
    echo $EXAMPLES
```

1 个答案:

答案 0 :(得分:4)

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

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