rpy2: представляет NA в Python как аргумент функции R

Я пытаюсь передать 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 (Я пробовал также псевдонимы REform, ReFormи т. д.) по какой-то причине. Есть идеи?

Эта функция R: https://www.rdocumentation.org/packages/lme4/versions/1.1-20/topics/predict.merMod

1 ответ

Это может быть проблемой с функцией dispatch / ellipsis в сигнатуре универсального (если в сигнатуре универсального элемента используется многоточие, rpy2 не может знать, что он должен переводиться . в _ для еще неизвестного именованного аргумента).

Пытаться:

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

или же:

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

Соответствующие разделы в документе: https://rpy2.github.io/doc/v3.0.x/html/robjects_rpackages.html и https://rpy2.github.io/doc/v3.0.x/html/robjects_functions.html (последняя в основном означает, что документ является кодом).

редактировать:

Также возможно смешивать R-код с Python творчески. Например:

myfunc = robjects.r('function (x) predict.merMod(x, re.form=NA)')
myfunc(mymodel)
Другие вопросы по тегам