【问题标题】:How to multiply scalar by ListVector in rpy2如何在rpy2中将标量乘以ListVector
【发布时间】:2017-02-10 07:27:36
【问题描述】:

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

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?

【问题讨论】:

    标签: python r rpy2 scalar vector-multiplication


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      这里的关键是要理解“+”和“*”本质上是 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))))
      

      【讨论】:

        猜你喜欢
        • 2015-02-18
        • 2014-07-31
        • 2012-10-30
        • 1970-01-01
        • 2018-08-02
        • 2016-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多