【问题标题】:Converting rpy syntax to rpy2 syntax将 rpy 语法转换为 rpy2 语法
【发布时间】:2014-08-13 20:51:15
【问题描述】:

假设我已经成功导入了 rpy2(我有),我需要从 rpy2 导入哪些其他模块/包(以及需要的其他语法更改)才能将以下 rpy 版本 1.x 函数字符串转换为它的rpy2等价物?我不能再在我为 python 2.7.3 运行的环境中使用 rpy 1.x,需要将它们转换为与 rpy2 一起使用才能使我的代码工作:

rpy.r.assign(rName, values) #get name, assign value
rpy.r.get("variablename") #get variable names
rpy.r.source (sourceloc + "sourcelocation") #source location
rpy.r.rm(list=rpy.r.ls()) #clean workspace
rpy.r.attach(rpy.r.get("fun")) #attach function
rpy.r.setwd(os.getcwd()) #set working directory
rpy.r.save_image() #save workspace image
rpy.r.load("filename.RData") #load an .RData file

提前感谢您提供的任何帮助。

【问题讨论】:

    标签: python r rpy2


    【解决方案1】:

    显然,您需要定义 Python 变量 rNamevaluessourceloc 等。您唯一需要的其他更改是

    import rpy2.robjects as ro
    R = ro.r
    

    并将每次出现的rpy.r 更改为R

    R.assign(rName, values) #get name, assign value
    R.get("variablename") #get variable names
    R.source(sourceloc + "sourcelocation") #source location
    R.rm(list=R.ls()) #clean workspace
    R.attach(R.get("fun")) #attach function
    R.setwd(os.getcwd()) #set working directory
    R.save_image() #save workspace image
    R.load("filename.RData") #load an .RData file
    

    【讨论】:

    • 不起作用?如果你加载 python IDLE 并将 rpy2robjects 导入为 ro,那么 R = ro.r。然后,如果您键入 R 后跟“。”并等待下拉列表,没有 get、assign、rm、attach 等。所以据我所知,rpy2 的环境变量已经完全改变。 PS--我在 Windows 环境中工作。
    • R 函数有很多,而不是将每个函数定义为ro.r 的属性,rpy2 使用__getattribute__(和__getitem__)方法根据需要查找值.因此,即使您在 IDLE 中看不到它们,但它们确实存在。不要等待下拉列表,而是尝试输入R.assign 并按Enter。它应该返回一个SignatureTranslatedFunction 对象。
    • (更正:我不应该仅仅因为属性的数量而暗示使用__getattribute__;它的使用也是因为它们都以相同的方式定义:通过调用_globalenv.get 和@ 987654337@。不幸的缺点是,在使用具有自动完成功能的 IDE 时,您不会将它们视为属性。)
    • 好吧,我得到了一个返回对象,这很好……但我的脚本仍然失败。同意缺少自动完成功能是不幸的。忘记了我多么依赖该功能来检查以确保安装了软件包。 :)
    猜你喜欢
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    相关资源
    最近更新 更多