gpt4 book ai didi

python - 如何从 R reticulate 调用 Python 方法

转载 作者:太空宇宙 更新时间:2023-11-03 11:16:15 28 4
gpt4 key购买 nike

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

```{python}
fruits = {
"apple": 53,
"banana": None,
"melon": 7,
}
```

可以使用网状结构访问,

```{r}
py$fruits
```

## $apple
## [1] 53
##
## $banana
## NULL
##
## $melon
## [1] 7

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

```{python}
print(fruits.keys())
```

## dict_keys(['apple', 'banana', 'melon'])

我试过:

```{r error=TRUE}
py$fruits$keys()
```

## Error in eval(expr, envir, enclos): attempt to apply non-function

```{r error=TRUE}
py$fruits.keys()
```

## Error in py_get_attr_impl(x, name, silent): AttributeError: module '__main__' has no attribute 'fruits.keys'

但是两次尝试都失败了。

最佳答案

正如 Type Conversions 中指出的那样, Python 的 dict 对象变成了 R 中的命名列表。因此,要访问 R 中等效的“字典键”,您可以使用 names:

```{r}
names(py$fruits)
```
## [1] "melon" "apple" "banana"

您可以选择使用 reticulate::dict() 将结果转换回类似 dict 的对象。生成的对象将按照您的意愿运行:

```{r}
reticulate::dict( py$fruits )
```
## {'melon': 7, 'apple': 53, 'banana': None}

```{r}
reticulate::dict( py$fruits )$keys()
```
## ['melon', 'apple', 'banana']

关于python - 如何从 R reticulate 调用 Python 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51108722/

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