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

Ale*_*lex 17 x11 macos r package

我尝试使用我创建的一些函数和脚本创建一个包(在Mac上使用X11).虽然R CMD检查正在进行,但它遇到了如下问题:

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

然而,奇怪的是,我的函数实际上没有"\ +".相反,它有"\\+"(见下文).所以我不知道为什么"\\+"被识别为"\ +".

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

为了进一步挖掘,我查看了Rcheck文件夹中的packageName-Ex.R文件.事实证明,在检查过程中所有的"\"都已更改为"\"(例如,我需要的两个斜杠,如strsplit()和grepl()等函数

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

Jos*_*ien 16

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

除非它是逃过一劫,\被解释为识别切片和标记宏的特殊字符(即命令,如\author,\description,\bold,和\ldots).引自Duncan Murdoch的Parsing 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)
Run Code Online (Sandbox Code Playgroud)

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

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