gpt4 book ai didi

macos - 创建 R 包时,错误 ['\+' 是从 "\+"开始的字符串中无法识别的转义

转载 作者:行者123 更新时间:2023-12-02 01:58:03 25 4
gpt4 key购买 nike

我尝试使用我创建的一些函数和脚本创建一个包(在 Mac 上使用 X11)。当 R CMD check 进行工作时,遇到了如下问题:

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() 等函数所需的双斜杠)

我想知道这可能是什么原因造成的。抱歉,我无法提供一个可重现的示例...

最佳答案

有问题的代码来自您的帮助文件之一的示例部分(这就是它最终出现在 packageName-Ex.R 中的原因)。要修复此问题,只需转义 *.Rd 的示例部分中的每个反斜杠即可。带有第二个反斜杠的文档文件。 (因此,在处理后的帮助文件中输入 \\ 即可获取 \,输入 \\\\ 即可获取 \\ 。)

除非它被转义,\被解释为标识分段和标记宏的特殊字符(即 \author\description\bold\ldots 等命令)。引用邓肯·默多克的Parsing Rd files (该主题的官方手册):

The backslash \ is used as an escape character: \, \%, { and } remove the special meaning of the second character.

作为实际情况的示例,以下是 $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)

关于macos - 创建 R 包时,错误 ['\+' 是从 "\+"开始的字符串中无法识别的转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10605485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com