Ran*_*lva 5 python r reticulate
reticulate允许您从 R 与 Python 交互。在 Python 中,通常使用(类)方法与变量交互。使用 reticulate 时如何访问/执行 R 中一个 Python 变量的方法?例如,如果我创建以下 Python 字典:
```{python}
fruits = {
"apple": 53,
"banana": None,
"melon": 7,
}
```
Run Code Online (Sandbox Code Playgroud)
可以使用网状访问,
```{r}
py$fruits
```
## $apple
## [1] 53
##
## $banana
## NULL
##
## $melon
## [1] 7
Run Code Online (Sandbox Code Playgroud)
如何调用字典类(例如keys()R)中的方法之一?
```{python}
print(fruits.keys())
```
## dict_keys(['apple', 'banana', 'melon'])
Run Code Online (Sandbox Code Playgroud)
我试过:
```{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'
Run Code Online (Sandbox Code Playgroud)
但两次尝试都失败了。
正如类型转换中所指出的,Python 的 dict 对象在 R 中变成命名列表。因此,要访问 R 中“字典键”的等效项,您可以使用names:
```{r}
names(py$fruits)
```
## [1] "melon" "apple" "banana"
Run Code Online (Sandbox Code Playgroud)
dict您可以选择使用将结果转换回类似对象reticulate::dict()。然后生成的对象将按照您想要的方式运行:
```{r}
reticulate::dict( py$fruits )
```
## {'melon': 7, 'apple': 53, 'banana': None}
```{r}
reticulate::dict( py$fruits )$keys()
```
## ['melon', 'apple', 'banana']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1514 次 |
| 最近记录: |