【发布时间】:2018-09-05 06:58:22
【问题描述】:
也许我遗漏了什么,但如果下面的代码是我的 Rmd 文件的内容
```{r}
library(reticulate)
use_virtualenv("r-reticulate")
py_available(TRUE)
```
```{python}
a = 7
print(a)
```
```{r}
py$a
```
当我编织文件时,最后一个块的输出是 7(如预期的那样)。另一方面,单击 Rstudio 中的全部运行按钮(或逐个运行块),最后一个块的结果为 NULL。
与R notebook example 相比,似乎在python 块中为flights 分配了一些东西应该使py$flights 可用于R,但事实并非如此。
问题:
- 有没有办法从 R 中访问在以前运行的 Python 块中创建的变量(不是 knit )?如何将在 python 块中创建的变量“导出”到 R?
- 什么是了解当我单击 Rmarkdown 文件的 python 块中的运行按钮时会发生什么的好参考?
编辑:好的,在这里看到第一个答案后,我确实将 knitr 和 rmarkdown 都更新到了最新版本,但仍然遇到同样的问题。
我在我的文件中添加了py_available(TRUE),以确保它已被初始化,但最后一个块在编织时会导致7,但一个接一个地运行块会导致
> py$a
Error in py_get_attr_impl(x, name, silent) :
AttributeError: 'module' object has no attribute 'a'
问题是:在 python 块中为a 赋值对 R 环境中的py$a 没有任何作用。也许 R 和 python 之间的这种“共享”环境不是包应该如何工作的?另外,对于一些额外的信息
> py_config()
python: /usr/bin/python
libpython: /usr/lib/python2.7/config-x86_64-linux-gnu/libpython2.7.so
pythonhome: /usr:/usr
version: 2.7.14 (default, Sep 23 2017, 22:06:14) [GCC 7.2.0]
numpy: /usr/lib/python2.7/dist-packages/numpy
numpy_version: 1.12.1
python versions found:
/usr/bin/python
/usr/bin/python3
【问题讨论】:
-
This blog post from (today/yesterday)
reticulate作者可能有用 -
你链接的文档说 reticulate 在 RStudio 的日常构建中,不确定它是否真的进入了 RStudio 的发布版本。 RStudio 已经包含了一种仅使用默认的
python解释器来运行 Python 块的方法,但没有与 R 的交叉通信,这可能就是您所看到的。 -
知道对你有用吗?
-
还是不行,只是用信息编辑了帖子。
标签: python r r-markdown knitr reticulate