使用 rpy2 映射 python 元组和 R 列表?
我在理解 rpy2 对象和 python 对象的映射时遇到一些困难。
我有一个函数(x),它在Python中返回一个元组对象,我想用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'对象不支持项目分配
你能帮我理解吗? 多谢 !!
I'm having some trouble to understand the mapping with rpy2 object and python object.
I have a function(x) which return a tuple object in python, and i want to map this tuple object with R object list or vector.
First, i'm trying to do this :
# 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"))')
FAIL with error :
rinterface.RRuntimeError: Error in eval(expr, envir, enclos) : object 'tlist' not found
So i'm trying an other strategy :
robjects.r["tlist"] = get_max_ticks(x)
r('x <- as.data.frame(tlist,row.names=c("seed","ticks"))')
FAIL with this error :
TypeError: 'R' object does not support item assignment
Could you help me to understand ?
Thanks a lot !!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用 GlobalEnv:
可以使用以下类型的表示法访问 R 命名空间中的符号:robjects.r.tlist,但您可以不要以这种方式赋值。分配符号的方法是使用robject.globalEnv。
此外,
R
中的某些符号可能包含句点,例如data.frame
。您无法使用类似于robjects.r.data.frame
的表示法在 Python 中访问此类符号,因为 Python 对句点的解释与R
不同。所以我建议完全避免这种表示法,而是使用robjects.r['data.frame']
,因为无论符号名称是什么,此表示法都有效。Use
globalEnv
:It may be possible to access symbols in the
R
namespace with this type of notation:robjects.r.tlist
, but you can not assign values this way. The way to assign symbol is to userobject.globalEnv
.Moreover, some symbols in
R
may contain a period, such asdata.frame
. You can not access such symbols in Python using notation similar torobjects.r.data.frame
, since Python interprets the period differently thanR
. So I'd suggest avoiding this notation entirely, and instead userobjects.r['data.frame']
, since this notation works no matter what the symbol name is.您还可以一起避免 R 中的赋值:
You could also avoid the assignment in R all together: