我是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'
这意味着什么?如何更改?
提前致谢!
答案 0 :(得分:0)
的结果
ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/
ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/
是浮点数的R向量(因此rpy2对象r.phyper(integerA, integerB, integerC, integerD)
)。您可以通过运行:
FloatVector
现在,如果要应用R向量化运算符(此处print(r.phyper(integerA, integerB, integerC, integerD))
应用于向量中的所有元素),最简单的方法之一是使用两个操作数的R向量并使用“R运算符”访问器"-"
:
.ro
其中一个选择是通常在Python序列的元素操作方式上完成:
from rpy2.robjects.vectors import FloatVector
p = FloatVector((.6, .7, .99))
pval= FloatVector([1.0])).ro - p
答案 1 :(得分:0)
我认为我的工作方式与Igautier建议的相似,但不是将我的1.0转换为FloatVector,而是将FloatVector转换为浮动,因为FloatVector似乎只包含1个元素:
p = r.phyper(intA, intB, intC, intD)
p = float(p[0])
pval = 1.0 - p
感谢您的帮助!