根据:https://yihui.name/knitr/demo/engines/很多语言都是由Rmarkdown处理的。
然而,我注意到只有R!块似乎继承了以前块中的变量。
例如,以下.Rmd文件:
---
title: "Variables inheritance in next chunk"
output: pdf_document
---
## Set variable
```{r defineVector}W= as.vector(c(2,6,7,5,7,8,5,7,6))
## Print mean
```{r meanValue, echo=TRUE}平均(W)
汇编得很好:

但与Python完全对应(Python块而不是R块):
---
title: "Variables inheritance in next chunk"
output: pdf_document
---
## Set variable
```{python defineVector}w=2,6,7,5,7,8,5,7,6
## Print mean
```{python meanValue, echo=TRUE}下面一行的结果是: NameError:未定义名称'w‘
打印(和(W)/浮动(len(W)
但是,如果我重复一遍: w=2,6,7,5,7,8,5,7,6
打印前,文档工作-编译成PDF
给出一个错误( NameError:名称'w‘未定义):

是否有任何选项将所有块设置为与所有语言完全相同的行为方式?
发布于 2017-03-04 13:18:31
答案实际上是OP:https://yihui.name/knitr/demo/engines/提供的链接(我的重点)。
除了engine='R‘(默认)外,所有块都在单独的会话中执行,因此变量不能直接共享。如果我们想要利用以前块中创建的对象,我们通常必须将它们写入文件(作为副作用)。对于bash引擎,我们可以使用Sys.setenv()将变量从R导出到bash (示例)。另一种方法是使用(实验性的) runr包。
这是runr软件包的一个小插曲。
https://stackoverflow.com/questions/42595620
复制相似问题