rpy2 Error: "unrecognized escape in character string"

rpy2 Error: "unrecognized escape in character string"

我在 R 中有一段代码想插入到我的 python 代码中。为此,我正在使用 rpy2。 R 代码涉及许多正则表达式,似乎 rpy2 没有正确处理它们,或者我没有对它们进行充分编码。

这是一段代码的示例,其中一段代码无效,另一段代码无效:

1) 有效:一个非常简单的 removeStopWords 函数:

import rpy2.robjects as robjects
from rpy2.robjects.packages import importr

robjects.r('''
library(data.table)
library(tm)

removeStopWords <- function(x) gsub("  ", " ", removeWords(x, stopwords("english")))

''')

In [4]: r_f = robjects.r['removeStopWords']
In [5]: r_f('I want to dance')[0]
Out[5]: 'I want dance'

2) 它不起作用:删除前导和尾随空格的同样简单的函数:

robjects.r('''
library(data.table)
library(tm)

trim <- function (x) gsub("^\s+|\s+$", "", x)

''')

 Error: '\s' is an unrecognized escape in character string starting ""^\s"
p = rinterface.parse(string)
Abort

我是 "expelled out" 来自 IPython

我已经直接试过了:

import rpy2.rinterface as ri
exp = ri.parse('trim <- function (x) gsub("^\s+|\s+$", "", x)') 

但是结果是一样的,Abort再出来IPython

现阶段我真的不知道该尝试什么。 R 代码非常大,因此将所有内容从 R 移动到 python 会花费我一些时间......而且我宁愿不必做这样的事情。

非常感谢任何帮助!

提前感谢您的宝贵时间。

当你在 Python 中的字符串中写入 \ 时,它被存储为 \ 因为 \ 是一个转义字符。所以当 R 执行代码时,它会看到 "^\s+|\s+$"。但是 \ 也是 R 中的转义字符, \s 不被识别为任何转义字符。

如果你想让R接收到"^\s+|\s+$",你需要在Python中写"^\\s+|\\s+$"(反斜杠数量的两倍)。