gpt4 book ai didi

python - 使用 rpy2 映射 python 元组和 R 列表?

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

我在理解 rpy2 对象和 python 对象的映射时遇到了一些问题。

我有一个在 python 中返回一个元组对象的函数 (x),我想用 R 对象列表或向量映射这个元组对象。

首先,我正在尝试这样做:

# return a python tuple into this r object tlist
robjects.r.tlist = get_max_ticks(x)

#Convert list into dataframe
r('x <- as.data.frame(tlist,row.names=c("seed","ticks"))')

失败错误: rinterface.RRuntimeError: eval(expr, envir, enclos) 错误:找不到对象 'tlist'

所以我正在尝试另一种策略:

robjects.r["tlist"]  = get_max_ticks(x)
r('x <- as.data.frame(tlist,row.names=c("seed","ticks"))')

失败并出现此错误:TypeError: 'R' 对象不支持项目分配

你能帮我理解一下吗?非常感谢!!

最佳答案

使用globalEnv:

import rpy2.robjects as ro
r=ro.r

def get_max_ticks():
return (1,2)
ro.globalEnv['tlist'] = ro.FloatVector(get_max_ticks())
r('x <- as.data.frame(tlist,row.names=c("seed","ticks"))')
print(r['x'])
# tlist
# seed 1
# ticks 2

可以使用这种类型的符号访问 R 命名空间中的符号:robjects.r.tlist,但您不能以这种方式赋值。分配符号的方法是使用robject.globalEnv

此外,R中的某些符号可能包含句点,例如data.frame。您不能使用类似于 robjects.r.data.frame 的符号在 Python 中访问此类符号,因为 Python 对周期的解释与 R 不同。所以我建议完全避免这种表示法,而是使用robjects.r['data.frame'],因为无论符号名称是什么,此表示法都有效。

关于python - 使用 rpy2 映射 python 元组和 R 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3300671/

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