gpt4 book ai didi

python - 有没有办法在 python/rpy2 中访问 R 数据框列名?

转载 作者:太空狗 更新时间:2023-10-30 01:00:20 25 4
gpt4 key购买 nike

我有一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com