从rpy2中提取返回值

时间:2018-07-17 07:13:47

标签: python r rpy2

我正在使用带有rpy2(V2.9.1)的Jupyter笔记本(Python 3内核)来从Python运行R中的命令。我可以向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>

imp是包含21个元素的列表。我希望能够通过名称访问元素。根据这篇文章:rpy2 access R named list items by name, low-level interface,我应该能够执行以下操作:

m = imp.rx('m')

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

这两个都给出错误消息“'rpy2.rinterface.ListSexpVector'对象没有属性'rx'(或在第二种情况下为'names')。但是上面引用的帖子使用的是ListSexpVector。这样吗?

1 个答案:

答案 0 :(得分:1)

在阅读了这篇帖子How to get data from R to pandas之后,我意识到问题出在%Rpull。 %Rpull不会以Python友好的形式返回对象,而使用

%%R -i blood -o imp

这样做,然后print(imp)可以正常工作,问题中列出的其他操作也是如此。