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)