错误[“\\ +”在字符串中未被识别转义开始“\\ +”,而创建A R包(An error [

2019-07-29 10:20发布

我试图创建使用一些功能和脚本我创建(在Mac上使用X11)包。 尽管[R CMD检查在做其工作时,遇到如下问题:

temp = trim(unlist(strsplit(lp.add(ranefterms[[i]]), 
+                     "\+")))
Error: '\+' is an unrecognized escape in character string starting "\+"

最奇怪的事情,但是,是我的功能却没有“\ +”。 相反,它有 “\ \ +”(见下文)。 所以我不知道为什么“\ \ +”被认定为“\ +”。

for(i in 1:n)
   temp = trim(unlist(strsplit(lp.add(ranefterms[[i]]), '\\+')))

为了进一步深入一点,我看着在Rcheck文件夹中的packageName-Ex.R文件。 事实证明,所有的“\ \” S已更改为“\”在检查过程中(例如,双斜杠我需要的功能,如strsplit()和grepl())

我不知道什么可能是它的原因。 对不起,我不能拿出一个重复的例子,...

Answer 1:

有问题的代码来自您的帮助文件中的一个实例部分(这就是为什么它在最终packageName-Ex.R )。 为了解决这个问题,只是逃避每个在你的例子部分的反斜杠*.Rd文档文件与第二反斜杠。 (因此,类型\\得到\在处理帮助文件,并键入\\\\得到\\ )。

除非它是逃过一劫, \被解释为标识切片和标记宏的特殊字符(即命令,如\author\description\bold ,和\ldots )。 从邓肯默多克的报价解析Rd文件 (这个主题的官方手册):

反斜杠\用作转义字符:\,\%,{和}去除第二字符的特殊含义。

由于这是什么看起来像在实践中例如,这里有一部分$R_SOURCE_HOME/src/library/base/man/grep.Rd ,当你键入其进行处理,以创建您查看帮助文件?grep?gsub

## capitalizing
txt <- "a test of capitalizing"
gsub("(\\\\w)(\\\\w*)", "\\\\U\\\\1\\\\L\\\\2", txt, perl=TRUE)
gsub("\\\\b(\\\\w)",    "\\\\U\\\\1",       txt, perl=TRUE)

在处理帮助文件,它看起来像这样:

 ## capitalizing
 txt <- "a test of capitalizing"
 gsub("(\\w)(\\w*)", "\\U\\1\\L\\2", txt, perl=TRUE)
 gsub("\\b(\\w)",    "\\U\\1",       txt, perl=TRUE)


文章来源: An error ['\\+' is an unrecognized escape in character string starting “\\+” while creating a R package