从 rpy2 中提取返回值
Extracting returned value from rpy2
我正在使用带有 rpy2 (V2.9.1) 的 Jupyter notebook(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 个元素的列表。我希望能够按名称访问元素。根据这个 post: 我应该可以做到以下几点:
m = imp.rx('m')
或
m = imp[imp.names.index('m')]
这两个都给出错误消息“'rpy2.rinterface.ListSexpVector' 对象没有属性 'rx'(或第二种情况下的 'names')。但是上面引用的 post 是使用 ListSexpVector。有没有办法做到这一点?
我读完 post 后意识到: 问题出在 %Rpull 上。 %Rpull 不会 return 对象以 Python 友好的形式,而使用
%%R -i blood -o imp
会,然后 print(imp) 会按预期工作,问题中列出的其他操作也是如此。
我正在使用带有 rpy2 (V2.9.1) 的 Jupyter notebook(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 个元素的列表。我希望能够按名称访问元素。根据这个 post:
m = imp.rx('m')
或
m = imp[imp.names.index('m')]
这两个都给出错误消息“'rpy2.rinterface.ListSexpVector' 对象没有属性 'rx'(或第二种情况下的 'names')。但是上面引用的 post 是使用 ListSexpVector。有没有办法做到这一点?
我读完 post 后意识到:
%%R -i blood -o imp
会,然后 print(imp) 会按预期工作,问题中列出的其他操作也是如此。