[英]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.