首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有办法在r中调用基本python函数?

有没有办法在r中调用基本python函数?
EN

Stack Overflow用户
提问于 2022-02-09 19:48:54
回答 2查看 98关注 0票数 1

我从python函数中得到了一个“生成器对象”。但是,我尝试了许多方法,但未能使用reticulate读取r中的“生成器对象”。我知道python函数list()可以将“生成器对象”转换为"json",然后我可以在r中读到。(我不喜欢使用py_run_file)

例如:

代码语言:javascript
运行
复制
>library(reticulate)
>foo <- import("foo")
>res <- foo.func()
<generator object at 0x7fd4fe98ee40>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-09 20:16:20

您可以使用iterateiter_next

作为一个例子,考虑一下python生成器firstn.py

代码语言:javascript
运行
复制
def firstn(n):
  num = 0
  while num < n:
    yield num
    num += 1

您可以在穿越发电机中使用iterate

代码语言:javascript
运行
复制
library(reticulate)
source_python('firstn.py')
gen <- firstn(10)
gen
#<generator object firstn at 0x0000020CE536AF10>

result <- iterate(gen)
result
# [1] 0 1 2 3 4 5 6 7 8 9

或使用iter_next

代码语言:javascript
运行
复制
iter_next(gen)
[1] 0
iter_next(gen)
[1] 1
iter_next(gen)
[1] 2
票数 1
EN

Stack Overflow用户

发布于 2022-02-09 20:08:57

我不确定你是否可以直接在R中,但你肯定可以在R,Markdown。我使用在两者之间来回翻转对象。

我使用基本的html_document YAML输出。然而,我通常不会编织这种类型的RMD,所以我认为如果您以同样的方式使用它,那么您放在那里的内容并不重要。

当使用reticulate时,您需要一个环境。

所以首先我要一个R块:

代码语言:javascript
运行
复制
```{r setup}

用于Python中随机创建r对象的库(Tidyverse)#

图书馆(网状)

use_virtualenv("KerasEnv") #这是我已经设置的环境

创建与Python一起使用的R对象

str(钻石)

切割<-钻石$裁剪%>%唯一()

代码语言:javascript
运行
复制

然后我将创建我的Python块。

代码语言:javascript
运行
复制
```{r usingPy,results="asis",engine="python"}

将numpy导入为np

随机导入

diamonds_py = r.diamonds #将数据集引入Python

mxX = max(diamonds_py.x) #创建一个新的Python对象以引入R

打印(MxX)

10.74

cut_py = r.cut #将向量引入Python

代码语言:javascript
运行
复制

现在假设我想把Python的东西带回R。

代码语言:javascript
运行
复制
```{r tellMeMore}

将Python对象引入R中

mxX_r = py $ mxX

1 10.74

代码语言:javascript
运行
复制

您可以逐行、分块或编织运行Python和R代码。要清除Python环境,我确信您必须重新启动RStudio。

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

https://stackoverflow.com/questions/71055838

复制
相关文章

相似问题

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