繁体   English   中英

使用rpy2将R对象转换为Python对象

[英]Cast R objects into Python ones with rpy2

问题:如何将R对象转换为python对象

我的情况:我需要将cor.test()的结果用于python例程。

correlation = robjects.r('function(x, y) cor.test(x, y)')
corr= correlation(robjects.IntVector(goodtotemp), robjects.IntVector(goodGDPs))
print corr

print corr[3]
print 'coef:',type(corr[3])

预期的输出:

     cor 
0.984881 
coef: <class 'rpy2.robjects.vectors.FloatVector'>

但是,我不能将corr [3]用作python对象,

c=corr[3]
print 'c:',c*10., type(c)

看(这是我知道我做错了的地方!),输出:

c:
Traceback (most recent call last):
  File "./GDPAnalyzer.py", line 234, in <module>
    print 'c:',c*10., type(c)
TypeError: unsupported operand type(s) for *: 'FloatVector' and 'float'

任何提示/帮助表示赞赏!

分段错误是应该报告为rpy2错误的错误。 否则,请尝试:

c.ro * 3

要么:

c[0] * 3

Python确实不支持casting的概念。 的确,在某些有限的情况下,它确实会执行某些操作,例如使用内置类型进行转换。

但是除此之外,程序员还需要将对象从一种形式转换为另一种形式,或者创建某种形式的Facade或shim对象,使R对象的行为类似于Python。

尝试使用print type(corr[3])来查看正在使用的Python类型。 它可能只是数字的字符串表示形式,在这种情况下,您可以使用eval()将其转换为浮点数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM