![](/img/trans.png)
[英]TypeError: unsupported operand type(s) for &: 'float' and 'float'
[英]TypeError: unsupported operand type(s) for -: 'float' and 'FloatVector'
我是Python的新手,甚至是rpy2的新手,這使我可以通過Python使用R。
我試圖從rpy2導入r:
from rpy2.robjects import r
這似乎可行,我繼續我的代碼,該代碼有時包含以下內容:
pval=1.0-r.phyper(integerA, integerB, integerC, integerD)
這給出了以下錯誤:
TypeError: unsupported operand type(s) for -: 'float' and 'FloatVector'
這是什么意思,我該如何更改?
提前致謝!
的結果
r.phyper(integerA, integerB, integerC, integerD)
是float的R向量(因此rpy2對象FloatVector
)。 通過運行以下命令,您可能會更好地看到它:
print(r.phyper(integerA, integerB, integerC, integerD))
現在,如果您要應用R向量矢量運算符(此處對向量中的所有元素應用"-"
),最簡單的方法之一是對兩個操作數都使用R向量,並使用“ R Operator”訪問器.ro
:
from rpy2.robjects.vectors import FloatVector
p = FloatVector((.6, .7, .99))
pval= FloatVector([1.0])).ro - p
一種替代方法是按照通常在Python序列上進行元素操作的方式進行:
pval = [1.0 - x for x in p]
我認為我的工作原理與Igautier所建議的類似,但是我沒有將我的1.0也轉換為FloatVector,而是將FloatVector轉換為float,因為FloatVector似乎只包含1個元素:
p = r.phyper(intA, intB, intC, intD)
p = float(p[0])
pval = 1.0 - p
謝謝你的幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.