所以我试图将一些R数据包中的数据导入到python中,以便测试我编写的其他一些python-rpy2函数。特别是,我使用R中的SpatialEpi
包和pennLC
数据集。
所以我能够导入rpy2包并正确连接到包。但是,我不确定如何访问包中的数据。
import rpy2.robjects as robjects
from rpy2.robjects.packages import importr
spep = importr("SpatialEpi")
但是,我似乎无法访问pennLC
包中的数据对象SpatialEpi
来测试该功能。等效的R命令是:
data(pennLC)
任何建议。
答案 0 :(得分:2)
在R中,执行data("foo")
可以在工作区中创建任意数量的对象。在rpy2
中,事物包含在环境中。这使它更清洁。
from rpy2.robjects.packages import importr, data
spep = importr("SpatialEpi")
pennLC_data = data(spep).fetch('pennLC')
pennLC_data
是Environment
(将其视为命名空间)。
列出所提取的内容:
pennLC_data.keys()
获取想要的数据对象:
pennLC_data['pennLC'] # guessing here, it might be a different name
答案 1 :(得分:1)
所以我根据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文档表明使用data=True
中的importr
参数会在PackageData
fetch .Package.__rdata__ . So I can do a
rdata下放置on the
个对象`对象。
然后,当我想访问数据时,我可以使用以下代码。
data['pennLC'][1]
In [43]: type(d['pennLC'][1])
Out[43]: rpy2.robjects.vectors.DataFrame
查看数据:
print(data['pennLC'][1])