使用rpy2为R准备一个python字符串

时间:2015-06-10 11:25:40

标签: python r string rpy2

这个问题与python variable to R有关,也可能与python objects to rpy2有关,但两者完全没有重叠,第一个实际上没有答案。

我的问题其实非常简单。我有一个字符串,说:

In [21]: strg
Out[21]: 'I want to go home'

我希望像这样通过robjects.r(''' ''')传递给R,例如:

robjects.r('''

test <- gsub("to", "",strg)

''')

但当然,当我运行时,我获得:Error in gsub("me", "", strg) : object 'strg' not found

我没有使用rpy2(显而易见),但我猜想与R和Python看到对象的环境有关。

我尝试了一些方法,比如首先将字符串strg转换为robject,然后将其提供给robjects.r(''' '''),但我收到相同的错误消息。总的来说,我不知道如何在strg环境中看到R

非常感谢任何帮助!

提前感谢您的时间!

2 个答案:

答案 0 :(得分:1)

只需将strg值添加到命令字符串:

robjects.r('''

test <- gsub("to", "",''' + strg + ''')

''')

或使用.format

robjects.r('''

test <- gsub("to", "",%s)

'''.format(strg))

请注意,您需要留意反斜杠,请参阅问题here

答案 1 :(得分:1)

我建议你创建一个函数,因为rpy2公开的R函数可以被调用,就像它是一个Python函数一样。

my_func = robjects.r('''
function(strg) {
    test <- gsub("to", "",strg)
    test
}
''')

my_func(strg)