rpy2: представляет NA в Python как аргумент функции R - PullRequest
0 голосов
/ 24 февраля 2019

Я пытаюсь передать функцию 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 Ответ

0 голосов
/ 24 февраля 2019

Это может быть проблема с функцией 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#importing-r-packages и https://rpy2.github.io/doc/v3.0.x/html/robjects_functions.html#rpy2.robjects.functions.SignatureTranslatedFunction (последнее в основном означает, что документ - это код).

edit:

Можно также творчески смешивать код R с Python,Например:

myfunc = robjects.r('function (x) predict.merMod(x, re.form=NA)')
myfunc(mymodel)
...