rpy2:将Python中的NA表示为R函数的参数

时间:2019-02-24 04:05:02

标签: python r rpy2 lme4

我正在尝试将NA传递给R函数,例如,仅使用固定效果(即没有随机效果)使用lme4混合模型进行预测:

import rpy2.rinterface as ri
from rpy2.robjects.packages import importr
rstats = importr('stats')
rstats.predict( mymodel, re_form=ri.NA_Logical )

但是,由于某种原因,re_form=ri.NA_Logical无法将NA传递给re.form(我也尝试过别名REformReForm等) 。有什么想法吗?

此R函数: https://www.rdocumentation.org/packages/lme4/versions/1.1-20/topics/predict.merMod

1 个答案:

答案 0 :(得分:2)

这可能是通用签名中的函数dispatch /省略号的问题(如果在通用签名中使用了省略号,rpy2无法知道应该将.转换为{{1 }}的命名参数未知。

尝试:

_

或:

rstats.predict(mymodel, **{'re.form': ri.NA_Logical})

文档中的相关部分是https://rpy2.github.io/doc/v3.0.x/html/robjects_rpackages.html#importing-r-packageshttps://rpy2.github.io/doc/v3.0.x/html/robjects_functions.html#rpy2.robjects.functions.SignatureTranslatedFunction(后者主要表示文档就是代码)。

编辑:

还可以通过创造性的方式将R代码与Python混合使用。例如:

lme4 = importr('lme4')
lme4.predict_merMod(mymodel, re_form=ri.NA_Logical)