首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以前块中设置的变量仅在R块的情况下才被继承(R标记)

以前块中设置的变量仅在R块的情况下才被继承(R标记)
EN

Stack Overflow用户
提问于 2017-03-04 11:45:39
回答 1查看 994关注 0票数 1

根据:https://yihui.name/knitr/demo/engines/很多语言都是由Rmarkdown处理的。

然而,我注意到只有R!块似乎继承了以前块中的变量。

例如,以下.Rmd文件:

代码语言:javascript
复制
---
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))

代码语言:javascript
复制
## Print mean

```{r meanValue, echo=TRUE}

平均(W)

代码语言:javascript
复制

汇编得很好:

但与Python完全对应(Python块而不是R块):

代码语言:javascript
复制
---
title: "Variables inheritance in next chunk"
output: pdf_document
---

## Set variable

```{python defineVector}

w=2,6,7,5,7,8,5,7,6

代码语言:javascript
复制
## Print mean

```{python meanValue, echo=TRUE}

下面一行的结果是: NameError:未定义名称'w‘

打印(和(W)/浮动(len(W)

但是,如果我重复一遍: w=2,6,7,5,7,8,5,7,6

打印前,文档工作-编译成PDF

代码语言:javascript
复制

给出一个错误( NameError:名称'w‘未定义):

是否有任何选项将所有块设置为与所有语言完全相同的行为方式?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-04 13:18:31

答案实际上是OP:https://yihui.name/knitr/demo/engines/提供的链接(我的重点)。

除了engine='R‘(默认)外,所有块都在单独的会话中执行,因此变量不能直接共享。如果我们想要利用以前块中创建的对象,我们通常必须将它们写入文件(作为副作用)。对于bash引擎,我们可以使用Sys.setenv()将变量从R导出到bash (示例)。另一种方法是使用(实验性的) runr包。

这是runr软件包的一个小插曲。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42595620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档