我有一个R数据框,保存在Database02.Rda中。正在加载
import rpy2.robjects as robjects
robjects.r.load("Database02.Rda")
工作正常。然而:
print(robjects.r.names("df"))
产量
NULL
同样,作为示例,列214(如果我们从0开始则为213)被命名为REGION。
print(robjects.r.table(robjects.r["df"][213]))
工作正常:
Region 1 Region 2 ...
9811 3451 ...
但我们也应该能够
print(robjects.r.table("df$REGION"))
但是,这导致
df$REGION
1
(对于根本不存在的列名也是如此);还:
print(robjects.r.table(robjects.r["df"]["REGION"]))
给出一个错误:
TypeError: SexpVector indices must be integers, not str
现在,文档说,名称不能用于python中的子集。我是否正确地假设在使用python / rpy2加载数据框时未导入其余数据的列名?因此,我是否正确地认为,访问它们的最简单方法是将它们保存并加载为单独的列表,并在python中将名称映射到列索引号上构造一个字典?但是,这似乎不太通用。有没有一种方法可以直接提取列名?
我使用的R,python,rpy2的版本是:R:3.2.2 python:3.5.0 rpy2:2.7.8
执行以下操作时,您正在将任何对象加载Database02.Rda
到R的“全局环境”中。
import rpy2.robjects as robjects
robjects.r.load("Database02.Rda")
robjects.globalenv
是一个环境。您可以通过以下方式列出其内容:
tuple(robjects.globalenv.keys())
现在,我了解到您的一个对象称为df
。您可以通过以下方式访问它:
df = robjects.globalenv['df']
如果df
是列表或数据框,则可以使用rx2
(文档再次成为您的朋友)访问其命名元素。要获得REGION
,请执行以下操作:
df.rx2("REGION")
列出列表或数据框中的所有命名元素很容易:
tuple(df.names)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句