Извлечение возвращенного значения из 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) затем работает как положено, как и другие операции, перечисленные в вопросе.