作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 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
现在,docs比如说,名称不能用于 python 中的子集化。我是否正确地假设在使用 python/rpy2 加载数据框时列名没有与其余数据一起导入?因此,我是否正确认为访问它们的最简单方法是将它们作为单独的列表保存和加载,并在 python 中构造一个 dict 左右,将名称映射到列索引号?然而,这似乎不是很通用。有没有办法直接提取列名?
我使用的R、python、rpy2的版本是:回复:3.2.2 python :3.5.0rpy2: 2.7.8
最佳答案
执行以下操作时,您正在将 Database02.Rda
中的任何对象加载到 R 的“全局环境”中。
import rpy2.robjects as robjects
robjects.r.load("Database02.Rda")
robjects.globalenv
是一个 Environement .您可以列出其内容:
tuple(robjects.globalenv.keys())
现在我了解到您的对象之一称为 df
。您可以通过以下方式访问它:
df = robjects.globalenv['df']
如果 df
是列表或数据框,您可以访问其命名元素rx2
(这里又是 the doc is your friend)。要获取名为 REGION
的区域,请执行以下操作:
df.rx2("REGION")
列出列表或数据框中的所有命名元素很容易:
tuple(df.names)
关于python - 有没有办法在 python/rpy2 中访问 R 数据框列名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35781624/
我是一名优秀的程序员,十分优秀!