问题:如何将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'
感谢任何提示/帮助!
答案 0 :(得分:1)
分段错误应该报告为rpy2错误。否则,请尝试:
c.ro * 3
或:
c[0] * 3
答案 1 :(得分:0)
Python真的不支持casting
的概念。确实,在某些有限的情况下,它确实会像使用内置类型进行投射一样。
但除此之外,程序员需要将对象从一种形式转换为另一种形式,或者创建某种形式的外观或填充对象,使R对象的行为类似于Python。
尝试使用print type(corr[3])
查看正在使用的Python类型。它可能只是数字的字符串表示形式,在这种情况下,您可以使用eval()
将其转换为浮点数。