Ошибка при сборке/перезагрузке пакета в R: не удалось найти функцию errmsg

Я собираю пакет R, внес небольшие изменения в файл DESCRIPTION и создаю пакетный документ. Я хотел просмотреть изменения и обновить документацию, а затем нажать «Сборка и перезагрузка», и я внезапно получаю эту ошибку:

Ошибка в errmsg("недопустимое значение ", поля," поля в DESCRIPTION"): не удалось найти функцию "errmsg"

Что может вызвать эту ошибку? Как я могу устранить неполадки?


person Phil    schedule 17.05.2017    source источник
comment
Можете ли вы отменить изменения в DESCRIPTION и вводить их по одному, пока они не сломаются? Вам нужно будет выполнить сборку и перезагрузку (или очистить и перестроить).   -  person steveb    schedule 18.05.2017
comment
@steveb Очень странно. Как вы и предложили, я отказался, а затем снова ввел изменения по одному. Все изменения теперь присутствуют, и ошибка больше не возникает.   -  person Phil    schedule 18.05.2017
comment
Несколько вещей, которые я нашел полезными при подготовке к сборке пакета (например, его тестирование перед сборкой), — это очистка среды rm(list=ls()). Запуск Clean and Rebuild (который должен перезапустить R, что необходимо). Кроме того, иногда (я думаю) необходимо было выйти из R Studio и перезапустить ее. В любом случае, я рад слышать, что это работает.   -  person steveb    schedule 18.05.2017
comment
Единственное место, где я смог найти похожую функцию errmsg(), было в этом довольно старом коде: github.com/hadley/packman/blob/master/old/cmd-install.r. Вы не используете это или что-то подобное? Это загадочная ошибка.   -  person neilfws    schedule 18.05.2017
comment
@neilfws Нет. Я также заметил эту страницу, когда искал потенциальную причину, но не знал, что с этим делать.   -  person Phil    schedule 18.05.2017


Ответы (1)


Я столкнулся с этим же сообщением об ошибке, и, похоже, оно вызвано ошибкой в ​​R 3.4.2 tools:::.install_packages(), функции R, которую вызывает R CMD INSTALL (которая, в свою очередь, вызывается devtools).

Когда он находит синтаксическую ошибку в одном из полей DESCRIPTION, он пытается распечатать сообщение о том, в каком поле возникла проблема, например «недопустимое значение поля LazyData в DESCRIPTION». Но сам обработчик ошибок выдает ошибку, и вместо этого вы получаете бесполезное сообщение о функции errmsg().

Я только что отправил свой отчет об ошибке по электронной почте в R-devel, но для всех, кто наткнется на эту страницу через Google, обходной путь — найти и исправить основную синтаксическую ошибку в вашем файле DESCRIPTION. В моем случае проблема заключалась в том, что у меня было LazyData: true, (с запятой в конце) вместо LazyData: true.

person Aaron Wells    schedule 24.11.2017