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

RSK*_*RSK 5 python rpy2 pandas

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

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

nms <- names(mtcars)
save(nms,file="mtcars_nms.rdata")
Run Code Online (Sandbox Code Playgroud)

现在我必须将 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
Run Code Online (Sandbox Code Playgroud)

我的python输出是

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

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

在 R 中,我们可以使用

load("mtcars_nms.rdata");
get('mtcars_nms')
Run Code Online (Sandbox Code Playgroud)

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

Ott*_*rdo 9

There is a new python package pyreadr that makes very easy import RData and Rds files into python:

import pyreadr

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

mtcars = result['mtcars_nms']
Run Code Online (Sandbox Code Playgroud)

It does not depend on having R or other external dependencies installed. It is a wrapper around the C library librdata, therefore it is very fast.

You can install it very easily with pip:

pip install pyreadr
Run Code Online (Sandbox Code Playgroud)

The repo is here: https://github.com/ofajardo/pyreadr

Disclaimer: I am the developer.