首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从R网化调用Python方法

如何从R网化调用Python方法
EN

Stack Overflow用户
提问于 2018-06-29 20:06:45
回答 2查看 1.2K关注 0票数 5

网状允许您从R.在Python中与Python进行接口,通常使用(类)方法与变量交互。如何访问/执行R中的一个Python变量的方法?例如,如果我创建以下Python字典:

代码语言:javascript
复制
```{python}

水果={

代码语言:javascript
复制
"apple": 53,
代码语言:javascript
复制
"banana": None,
代码语言:javascript
复制
"melon": 7,

}

代码语言:javascript
复制

可以用网状结构获取,

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

py$水果

代码语言:javascript
复制
## $apple
## [1] 53
## 
## $banana
## NULL
## 
## $melon
## [1] 7

如何调用字典类中的一个方法,例如R中的keys()

代码语言:javascript
复制
```{python}

打印(fruits.keys())

代码语言:javascript
复制
## dict_keys(['apple', 'banana', 'melon'])

我试过:

代码语言:javascript
复制
```{r error=TRUE}

py$水果$keys()

代码语言:javascript
复制
## Error in eval(expr, envir, enclos): attempt to apply non-function

```{r error=TRUE}

py$fruits.keys()

代码语言:javascript
复制
## Error in py_get_attr_impl(x, name, silent): AttributeError: module '__main__' has no attribute 'fruits.keys'

但两次尝试都失败了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-29 20:47:10

正如类型转换中所指出的,Python对象变成了R中的命名列表,因此,要访问R中的“字典键”,您可以使用names

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

名称(py$水果)

代码语言:javascript
复制
## [1] "melon"  "apple"  "banana"

您可以选择使用dict-like对象将结果转换回reticulate::dict()。然后,生成的对象将按您的需要运行:

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

网格::dict(py$水果)

代码语言:javascript
复制
## {'melon': 7, 'apple': 53, 'banana': None}

```{r}

网状::dict(py$水果)$keys()

代码语言:javascript
复制
## ['melon', 'apple', 'banana']
票数 5
EN

Stack Overflow用户

发布于 2019-07-09 21:18:00

对原始Python块进行一点反思:

代码语言:javascript
复制
```{python}

水果={

“苹果”:53,

“香蕉”:没有,

“甜瓜”:

}

代码语言:javascript
复制

在另一个R块中:

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

py_fruits <- r_to_py(py$果树)

py_list_attributes(py_fruits)

py_fruits$keys()

py_fruits$items()

代码语言:javascript
复制

您将获得(1)对象的所有可用属性,(2) dict键;(3) dict item;(4) dict值:

使用r_to_py()观察从R到Python的转换。

如果您想深入挖掘,也可以这样做:

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

图书馆(网状)

builtins <- import_builtins()

内置$dict$key(py$水果)#key

$dict$项目(py$水果)#项目

内置$dict$value(py$水果)#值

代码语言:javascript
复制

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

https://stackoverflow.com/questions/51108722

复制
相关文章

相似问题

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