使用 rpy2 为 R 准备 python 字符串

Prepare a python string for R using rpy2

此问题与 and perhaps also to this python objects to rpy2 有关,但两个问题中的 none 完全重叠,第一个实际上没有答案。

我的问题其实很简单。我有一个字符串,比如:

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(''' '''),但我收到相同的错误消息。总的来说,我不知道该怎么做才能在 R 环境中看到 strg

非常感谢任何帮助!

提前感谢您的宝贵时间!

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

robjects.r('''

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

''')

或者,通过使用 .format:

robjects.r('''

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

'''.format(strg))

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

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

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

my_func(strg)