在创建R包时,错误['\ +'是字符串中以“\ +”开头的无法识别的转义符

时间:2012-05-15 16:58:57

标签: macos r package x11

我尝试使用我创建的一些函数和脚本创建一个包(在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文件。事实证明,在检查过程中所有的“\”都被更改为“\”(例如,我需要的两个斜杠,如strsplit()和grepl()等函数)

我想知道原因可能是什么。对不起,我无法想出一个可重现的例子......

1 个答案:

答案 0 :(得分:16)

违规代码来自您的某个帮助文件的示例部分(这就是为什么它最终会出现在packageName-Ex.R中)。要修复它,只需使用第二个反斜杠转义*.Rd文档文件的示例部分中的每个反斜杠。 (因此,在已处理的帮助文件中键入\\以获取\,然后键入\\\\以获取\\。)

除非它被转义,否则\被解释为识别切片和标记宏的特殊字符(即\author\description\bold和{ {1}})。引自Duncan Murdoch的Parsing Rd files(该主题的官方手册):

  

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

作为实际情况的示例,此处是\ldots的一部分,处理该文件时会创建您在键入$R_SOURCE_HOME/src/library/base/man/grep.Rd?grep时看到的帮助文件。< / p>

?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)