yihui给出了为不同引擎使用缓存选项的示例
https://github.com/yihui/knitr-examples/blob/master/023-engine-python.Rmd
我似乎无法让它为python工作。
以下作品
```{r,engine='python',cache=TRUE}
x=10
print x
```
但这不起作用
```{r,engine='python',cache=TRUE}
x = 10
```
```{r,engine='python',cache=TRUE}
print x
```
有人有想法吗?
答案 0 :(得分:4)
块选项cache
不会保存块中为R
以外的语言定义的所有变量。但是,它保存了打印输出,因此如果计算需要一段时间的内容,则不需要重新计算任何结果。来自knitr
网站:
除
engine='R'
(默认)外,所有块都是单独执行的 会话,因此无法直接共享变量。如果我们想 利用在以前的块中创建的对象,我们通常必须这样做 将它们写入文件(作为副作用)。对于bash引擎,我们可以使用Sys.setenv()
将变量从R导出到bash(示例)。
可以在shell的环境中保存一些值,并通过读取环境从其他单元格中检索这些值。这是方法Yihui took in the Polyglot example。因此,对于Python,如果您可以将值格式化为字符串并将其传递给sys.setenv()
,则可以通过调用sys.getenv()
在另一个单元格中运行该值(作为单独的Python会话运行)。
尽管如此,我对使用C
和Fortran
引擎采取的方法感到有些困惑。那些似乎可以通过using some function called .C()
或function called .Fortran()
访问后续块中的已编译函数。但似乎Python没有等价物。