使用 rpy2 在 Python 中保存 RData 工作区
Posted
技术标签:
【中文标题】使用 rpy2 在 Python 中保存 RData 工作区【英文标题】:save RData workspace in Python using rpy2 【发布时间】:2014-09-23 00:48:38 【问题描述】:另一个与 rpy2 相关的问题是关于将弃用的 rpy 代码转换为其 rpy2 等效项。在我的 python 脚本中,我有一个 for 循环语句,它只是将输入传递给一系列矩阵。最后,我将其保存到 .RData 工作区以再次加载并再循环 2 次。
在rpy中,保存文件是这样写的:
#Save resulting RDATA workspace (.RDATA file)
rpy.r.save_image()
我试过了,没有成功
import rpy2.robjects as ro
from rpy2robjects import r
ro.r.save_image()
另外,我还有另一个具有此功能的 python 脚本,我也尝试过使用 ro.r,但没有成功:
#Write out success variable
rpy.r("success = TRUE")
rpy.r("save(success,file='success.RData')")
如果有人知道如何翻译上述“rpy.r”。对 rpy2 等效性的陈述,我将不胜感激。
【问题讨论】:
【参考方案1】:如果使用 rpy2 加载保存的对象,您可以只使用 Python 的酸洗(相当于 R 的加载/保存 - 参见 http://pymotw.com/2/pickle/): http://rpy.sourceforge.net/rpy2/doc-2.4/html/robjects_serialization.html
否则试试:
from rpy2.robjects.packages import importr
base = importr('base')
base.save_image(<arguments here...>)
【讨论】:
我正在使用 ro.r.load() 来加载保存的对象。该语法似乎工作正常。但它将图像保存到我遇到问题的磁盘。我阅读了 robjects 序列化,但我没有关注它(这里是菜鸟)...您能提供一个工作示例吗? 完成(在答案中)。 谢谢@lgautier。此外,我发现并成功测试的另一个途径(对于那些希望知道的人)是 rpy_classic 也会将 save_image() 转换为 rpy2。在 rpy2 中给猫剥皮的许多不同方法。 :)以上是关于使用 rpy2 在 Python 中保存 RData 工作区的主要内容,如果未能解决你的问题,请参考以下文章
Python 中调用 R 语言 | rpy2 的安装和使用 | 完美解决各种问题并成功配置好