Извлечение возвращенного значения из rpy2

Я использую ноутбук Jupyter (ядро Python 3) с rpy2 (V2.9.1) для запуска команд в R из Python. Я могу передавать значения в и из R, но моя проблема в том, что я не знаю, как извлечь нужную информацию из переменной, возвращаемой из R. У меня есть следующий код:

%Rpush blood

%%R
library("mice")
memory.limit(56000)
imp <- mice(blood, seed = 23109)

%Rpull imp

print(imp)
[out]<rpy2.rinterface.ListSexpVector - Python:0x00000178FC1BDA20 / R:0x00000178BCF236F0>

Имп список из 21 элементов. Я хотел бы иметь возможность получить доступ к элементам по имени. Согласно этому посту: rpy2 доступ R именованных элементов списка по имени, низкоуровневый интерфейс Я должен быть в состоянии сделать следующее, например:

m = imp.rx('m')

или же

 m = imp[imp.names.index('m')]

Оба из них выдают сообщение об ошибке "У объекта" rpy2.rinterface.ListSexpVector "нет атрибута" rx "(или" имена "во 2-м случае). Однако в сообщении, указанном выше, использовался ListSexpVector. Есть ли способ сделать это?

1 ответ

Прочитав этот пост, я понял: как получить данные от R к пандам, что проблема была в%Rpull. %Rpull не возвращает объект в Python-дружественной форме, тогда как при использовании

%%R -i blood -o imp

да, и print(imp) затем работает как положено, как и другие операции, перечисленные в вопросе.

Другие вопросы по тегам