【问题标题】:Passing python list as argument to R function in rpy2将python列表作为参数传递给rpy2中的R函数
【发布时间】:2013-08-12 16:40:51
【问题描述】:

我从 rpy2 和 python 开始进行数据分析。我可以将简单的 python 变量(如 z=2.534)传递给 rpy2 中的 R 函数:

value=robjects.r('''
f<-function(z){
# process and return something
}
f('''+str(z)+''')
''')

但是,当我为 z 传递列表时,如 z=[1,2,3] 为上述代码 str(z) 不起作用,当我手动传递 '[1,2,3]' 为 str(z) ,函数 f 显然无法将字符数据作为 R 中的列表使用。

我需要在 [1,2,3] 之类的列表中找到项目的平均值,那么如何做到这一点?

【问题讨论】:

    标签: python rpy2


    【解决方案1】:

    evaluating R code 上的文档建议:

    f = robjects.r('''
    f<-function(z){
        # process and return something
    }''')
    
    value = f(z)
    

    【讨论】:

      【解决方案2】:

      试试这样的。还有一个 FloatVector 和 StrVector。

      res = robjects.IntVector([1, 2, 3])
      

      【讨论】:

      • 问题是写什么来代替'str(z)'。如果在其位置 res 被传递,则错误被引发为 TypeError: cannot concatenate 'str' and 'IntVector' objects
      • 如果 z = [1,2,3] res = robjects.IntVector(z)。也许我不明白你的意思。
      • 您可以使用 print(z) 打印 z,但似乎 str() 不适用于 robjects。我想这是你关心的问题,对吧?
      • 您可能可以 str 单个元素。或者重载 str() 来处理 robjects。
      最近更新 更多