如何将 R 的 .rdata 文件加载到 Python?

How to load R's .rdata files into Python?

我正在尝试将 R 代码的一部分转换为 Python。在这个过程中我遇到了一些问题。

我有如下所示的R代码​​。在这里,我将我的 R 输出保存为 .rdata 格式。

nms <- names(mtcars)
save(nms,file="mtcars_nms.rdata")

现在我必须将 mtcars_nms.rdata 加载到 Python。 我导入了 rpy2 模块。然后我尝试将文件加载到 python 工作区。但是无法看到实际输出。

我使用以下 python 代码导入 .rdata.

import pandas as pd
from rpy2.robjects import r,pandas2ri
pandas2ri.activate()

robj = r.load('mtcars_nms.rdata')
robj

我的python输出是

R object with classes: ('character',) mapped to:
<StrVector - Python:0x000001A5B9E5A288 / R:0x000001A5B9E91678>
['mtcars_nms']

现在我的 objective 是从 mtcars_nms 中提取信息。

在 R 中,我们可以使用

load("mtcars_nms.rdata");
get('mtcars_nms')

现在我想在 Python 中做同样的事情。

与其使用 .rdata 格式,我建议使用 feather,这样可以在 R 和 Python.

之间有效地共享数据

在 R 中,你会 运行 像这样:

library(feather)
write_feather(nms, "mtcars_nms.feather")

在 Python 中,要将数据加载到 pandas 数据帧中,您只需 运行:

import pandas as pd
nms = pd.read_feather("mtcars_nms.feather")

R 函数 load 将 return 加载(到 GlobalEnv)对象的名称的 R 向量。

你必须在 rpy2 中做你在 R 中做的事情:

回复:

get('mtcars_nms')

Python/rpy2

robjects.globalenv['mtcars_nms']

有一个新的 python 包 pyreadr 可以很容易地将 RData 和 Rds 文件导入 python:

import pyreadr

result = pyreadr.read_r('mtcars_nms.rdata')

mtcars = result['mtcars_nms']

它不依赖于安装 R 或其他外部依赖项。 它是 C 库的包装器 librdata,因此速度非常快。

你可以使用 pip 轻松安装它:

pip install pyreadr

回购在这里:https://github.com/ofajardo/pyreadr

免责声明:我是开发者。