rpy2 - 如何将数据帧作为RData文件保存到磁盘?

时间:2017-09-29 00:52:04

标签: python r rpy2

我想知道如何将pandas数据帧保存到.RData文件,如何从pandas数据帧保存到RData?我已经完成了最后一步:

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

# load RData file
df = pandas2ri.ri2py(robjects.r['get'](robjects.r['load'](path_to_rdata_file)))

.... do some processing to df ...

# save df as RData file
r_df = pandas2ri.py2ri(df)
??????????

如何将pandas数据保存为.RData文件?

1 个答案:

答案 0 :(得分:3)

我终于找到了答案,以下是您使用pandas数据框写入.RData文件的方式:

首先将数据帧转换为R数据帧:

r_data = pandas2ri.py2ri(df)

然后我们必须将数据帧分配给“R工作区”中的变量:

robjects.r.assign("my_df", r_data)

最后,我们可以按名称引用变量,以便调用save命令:

robjects.r("save(my_df, file='{}')".format(filename))
  

如果你想读/写RData文件但是在python中使用pandas,这里有2个辅助函数:

# read .RData file as a pandas dataframe
def load_rdata_file(filename):
    r_data = robjects.r['get'](robjects.r['load'](filename))
    df = pandas2ri.ri2py(r_data)
    return df

# write pandas dataframe to an .RData file
def save_rdata_file(df, filename):
    r_data = pandas2ri.py2ri(df)
    robjects.r.assign("my_df", r_data)
    robjects.r("save(my_df, file='{}')".format(filename))
    os.chmod(filename, 0o777)