Попробовав, я обнаружил, что есть разница, предлагаете ли вы R-экземпляр rpy2 для выполнения полной строки R-кода или нет.
Таким образом, вы можете заставить свою функцию работать, задавая как можно больше кода R:
#Run the example clogit function, which fails
rescl=R.clogit('case~spontaneous+induced+strata(stratum)',data=infert)
#But give the R code to be executed as one complete string - this works:
rescl=R('clogit(case ~ spontaneous + induced + strata(stratum), data = infert)')
Если вы фиксируете возвращаемое значение для переменной в R, вы можете проверить данные и получить критическую информацию модели с помощью обычных функцийв R.
Например,
R('rescl.in.R <- clogit(case ~ spontaneous + induced + strata(stratum), data = infert)')
R('str(rescl.in.R)')
# or:
R('coef(rescl.in.R)')
## array([1.98587552, 1.40901163])
R('names(rescl.in.R)')
## array(['coefficients', 'var', 'loglik', 'score', 'iter',
## 'linear.predictors', 'residuals', 'means', 'method', 'n', 'nevent',
## 'terms', 'assign', 'wald.test', 'y', 'formula', 'xlevels', 'call',
## 'userCall'], dtype='<U17')
Это очень помогает - по крайней мере, на этом первом этапе использования rpy2
(для меня тоже), чтобы ваш экземпляр r был открыт и пыталсяпараллельный код, который вы делаете, так как вывод в R гораздо более читабелен, и вы знаете и видите, что делаете и на что можете обратиться.В Python вывод лишен важной информации (например, имени и т. Д.), И, кроме того, он не очень печатный.