rpy2(版本2.3.10)-将数据从R包导入python

rpy2(版本2.3.10)-将数据从R包导入python,python,r,pandas,rpy2,Python,R,Pandas,Rpy2,因此,我试图将一些数据从R包导入python,以便测试我编写的其他python-rpy2函数。特别是,我在R中使用了SpatialEpi包和pennLC数据集 因此,我能够导入rpy2包并正确连接到该包。但是,我不知道如何访问包中的数据 import rpy2.robjects as robjects from rpy2.robjects.packages import importr spep = importr("SpatialEpi") 但是,我似乎无法访问SpatialEpi包中的数据

因此,我试图将一些数据从R包导入python,以便测试我编写的其他python-rpy2函数。特别是,我在R中使用了
SpatialEpi
包和
pennLC
数据集

因此,我能够导入rpy2包并正确连接到该包。但是,我不知道如何访问包中的数据

import rpy2.robjects as robjects
from rpy2.robjects.packages import importr
spep = importr("SpatialEpi")
但是,我似乎无法访问
SpatialEpi
包中的数据对象
pennLC
,以测试函数。等效的R命令为:

data(pennLC)
任何建议

在R中,执行
数据(“foo”)
可以在工作区中创建任意数量的对象。在
rpy2
中,事物包含在环境中。这使它更干净

from rpy2.robjects.packages import importr, data
spep = importr("SpatialEpi")
pennLC_data = data(spep).fetch('pennLC')
pennLC_data
是一个
环境
(将其视为一个名称空间)

要列出提取的内容,请执行以下操作:

pennLC_data.keys()
要获取所需的数据对象,请执行以下操作:

pennLC_data['pennLC'] # guessing here, it might be a different name

因此,我根据上面Laurent的信息找到了一个答案

我使用的是rpy2版本2.3.10,这与上面的Laurent代码有一些不同。这就是我所做的

import rpy2.objects as robj
from rpy2.robjects.packages import importr
spep = importr('SpatialEpi', data = True)
data = spep.__rdata__.fetch('pennLC')
首先请注意,rpy2 2.3.10中没有
.data
方法——名称可能已更改。但是,2.3.10文档指出,在
importr
中使用
data=True
参数将把
PackageData
对象放在
包下。因此,我可以对
rdata`对象执行获取

然后,当我想要访问数据时,我可以使用以下代码

data['pennLC'][1]

In [43]: type(d['pennLC'][1])
Out[43]: rpy2.robjects.vectors.DataFrame
要查看数据,请执行以下操作:

print(data['pennLC'][1])

嗨,劳伦特。这很有帮助。我使用的是rpy2 2.3.10,因此您提到的一些指令无法正常工作--现在包对象上没有
数据
方法。但我把我的答案放在下面。如果你对我在下面写的东西有任何建议,请告诉我。@krishnab啊,是的<代码>数据()
在rpy2-2.4.0-dev中。rpy2-2.3.10可以使用
data=True
/
。\uuuuuu rdata\uuuuu
。2.4中的函数
data()
的目的是让事情变得不那么麻烦。