【问题标题】:Extracting returned value from rpy2从 rpy2 中提取返回值
【发布时间】:2018-07-17 07:13:46
【问题描述】:

我正在使用带有 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 个元素的列表。我希望能够按名称访问元素。根据这篇文章: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。有没有办法这样做?

【问题讨论】:

    标签: python r rpy2


    【解决方案1】:

    读完这篇文章后我意识到:How to get data from R to pandas 问题出在 %Rpull 上。 %Rpull 不会以 Python 友好的形式返回对象,而使用

    %%R -i blood -o imp
    

    确实如此,然后 print(imp) 会按预期工作,问题中列出的其他操作也是如此。

    【讨论】:

      猜你喜欢
      • 2017-11-05
      • 1970-01-01
      • 2013-05-24
      • 1970-01-01
      • 1970-01-01
      • 2018-12-01
      • 2012-07-11
      • 2012-10-08
      • 1970-01-01
      相关资源
      最近更新 更多