Вопрос по x11, macos, package, r – Ошибка ['\ +' - это нераспознанный выход в символьной строке, начинающейся с «\ +» при создании пакета R

17

Я попытался создать пакет, используя некоторые функции и скрипты, которые я создал (используя X11 на Mac). Пока R CMD check выполнял свою работу, он столкнулся с проблемой следующим образом:

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

Однако самым странным является то, что моя функция на самом деле НЕ имеет & quot; \ + & quot ;. Вместо этого он имеет & quot; \ \ + & quot; (увидеть ниже). Так что я не знаю, почему & quot; \ \ + & quot; распознается как "\ +".

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

Чтобы покопаться немного дальше, я посмотрел файл packageName-Ex.R в папке Rcheck. Как выяснилось, все "\" были изменены на "\". в процессе проверки (например, двойная косая черта, которая мне нужна для таких функций, как strsplit () и grepl ())

Интересно, что могло быть причиной этого. Извините, что не могу придумать воспроизводимый пример ...

Ваш Ответ

1   ответ
16

авки (вот почему он заканчивается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)
Error: User Rate Limit Exceeded\\ Error: User Rate Limit ExceededorError: User Rate Limit Exceeded\dontrun{} блок,orError: User Rate Limit Exceeded*.RdError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Alex

Похожие вопросы