簡體   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