如何在 rpy2 中将标量乘以 ListVector

How to multiply scalar by ListVector in rpy2

我正在运行进行以下分析并尝试绘制我的模型的逆逻辑:

R.plot(formula, data=data, ylab = 'P(outcome =  1 | outcome)', xlab = 'SURVRATE: Probability of Survival after 5 Years', xaxp = c(0, 95, 19))
a = R.coef(mod1)[0] 
b = R.coef(mod1)[1]
R.curve(invlogit(a + b*R.x)) 

invlogit 是我通过 STAP 访问的 R 函数。

一切正常,但是当我 运行 curve 函数时,出现错误 TypeError: unsupported operand type(s) for *: 'float' and 'ListVector'...

我试过各种方法来处理这个问题,比如使用 np.multiply 等等,但都无济于事。如何处理标量与 python 内的 ListVector 的乘法?

Kludgey 解决方案是仅使用 rmagic 命令。将我的所有 R 代码转换为等效的 rpy2 代码似乎是阻力最小的路径。

这里的关键是理解“+”和“*”本质上与其他函数一样是 R 函数。这意味着我们也需要“导入”它们。您的示例不可重现,所以我会尽我所能勾勒出解决方案:

import rpy2.robjects as ro
from rpy2.robjects.vectors import FloatArray
add = ro.r['+']
multi = ro.r['*']
R.curve(invlogit(add(FloatArray([a]), multi(FloatArray([b]), R.x))))