gpt4 book ai didi

python - 在 knitr 中以不同语言定义的 block 之间混合变量/结果?

转载 作者:太空狗 更新时间:2023-10-29 21:37:34 24 4
gpt4 key购买 nike

语言引擎 是一个很棒的 knitr 功能。我们可以在 knitr 中使用任何语言,包括但不限于 R。但是如果我想使用一个 chunck 中定义的结果/变量,在另一个 chunck 中使用相同的语言或另一种语言怎么办(更性感的选择)?

最好用一些代码来解释我的想法。这里我定义了 4 个 block ,2 个在 python 中,2 个在 R 中。

首先我在python中定义了一个变量x:

## I define engien path explicitly here (TODO: set it globally)
```{r,engine='python',engine.path='C:/Anaconda/python.exe' }
x = 1
print x
```
## 1

现在尝试在新的 python chunck 中使用 x:

```{r,engine='python',engine.path='C:/Anaconda/python.exe' }
x = x +1
print x

```

没有错误,但结果惊人,看起来 x 在这里是 NULL。现在,如果我尝试在新的 R chunck 中使用 x:

```{r fig.width=7, fig.height=6}
x +1
y = 2
```
## Error: object 'x' not found

我得到一个错误。现在,如果我尝试在新的 R block 中使用 y,它工作正常。 r 引擎可以使用之前 R chunck 中定义的变量。请注意,这不适用于 python。

```{r fig.width=7, fig.height=6}
y+3
```
## [1] 5

为什么 R 和 python 之间的行为在这里存在差异?它是由于 R 作用域规则而结构化的,还是只是尚未在 knitr 中实现的 future ?或者可能是一个错误?

最佳答案

这是记录在案的行为。

参见 http://yihui.name/knitr/demo/engines/

Except engine='R' (default), all chunks are executed in separate sessions, so the variables cannot be directly shared. If we want to make use of objects created in previous chunks, we usually have to write them to files (as side effects). For the bash engine, we can use Sys.setenv() to export variables from R to bash (example)

关于python - 在 knitr 中以不同语言定义的 block 之间混合变量/结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17982967/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com