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 中做同样的事情。
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.