knitr-Python引擎缓存选项不起作用

发布于 2021-01-29 14:10:46

yihui给出了针对不同引擎使用cache选项的示例

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
被浏览
109
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    块选项cache不会保存块中定义的除之外的所有语言变量R。但是,这是保存打印输出的结果,因此,如果您计算需要花费一些时间的内容,则无需重新计算任何结果。从knitr网站:

    engine='R'(默认)外,所有块均在单独的会话中执行,因此不能直接共享变量。如果要使用在先前的块中创建的对象,通常必须将它们写入文件(作为副作用)。对于bash引擎,我们可以
    Sys.setenv()用来将变量从R导出到bash(示例)。

    可以在外壳程序的环境中保存一些值,然后通过读取环境从其他单元格检索这些值。这是Yihui在Polyglot示例中采用的方法。因此,对于Python,如果您可以将值格式化为字符串并将其传递给sys.setenv(),则可以通过调用在另一个单元格(作为单独的Python会话运行)中使用该值sys.getenv()

    虽然,我对CFortran引擎采用的方法感到有些困惑。这些似乎通过有机会获得在以后的块编译函数使用名为某种功能.C()调用的函数.Fortran()。但是,似乎Python没有等效功能。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看