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+$"
(反斜杠数量的两倍)。
我在 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+$"
(反斜杠数量的两倍)。