Character (0) при запуске devtools:: load_all ( "." ) в RStudio
У меня есть пакет R, который я создавал в RStudio, и позвонил ему my_pkg
. Когда я запускаю devtools::load_all(".")
внутри RStudio (в частности, используя ярлык Ctrl + Shift + L
), я получаю следующее сообщение:
Loading my_pkg
Warning messages:
1: character(0)
2: character(0)
3: character(0)
4: character(0)
5: character(0)
Все функции в пакете работают нормально. Мои файлы NAMESPACE
и DESCRIPTION
не содержат синтаксических ошибок. Однако, когда я запускаю ?my_pkg
, файл справки не соответствует спецификациям, указанным в файле DESCRIPTION
. Когда я удаляю Imports
из DESCRIPTION
, больше не появляется предупреждающее сообщение character(0)
. Конечно, мне нужен этот импорт. Когда я меняю Imports
на Suggests
, появляется предупреждающее сообщение character(0)
.
Вот описание содержимого файла, с некоторыми изменениями для защиты IP.
Package: scoutdroid
Title: This is where the title is.
Version: 0.1
[email protected]: "Ben Hanowell <[email protected]> [aut, cre]"
Description: This is where the description is.
Depends:
R (>= 3.1.0)
Imports:
dplyr,
lubridate,
mboost,
randomForestSRC,
RODBC,
stringr
License: file LICENSE
LazyData: true
И вот NAMESPACE
.
# Generated by roxygen2 (4.0.1): do not edit by hand
import(RODBC)
import(dplyr)
import(lubridate)
import(mboost)
import(parallel)
import(randomForestSRC)
import(stringr)
Когда я использую кнопку RStudio Build и Reload на вкладке Build, я получаю следующие предупреждения:
** подготовка пакета для ленивой загрузки
Warning: replacing previous import by 'lubridate::intersect' when loading 'scoutdroid'
Warning: replacing previous import by 'lubridate::setdiff' when loading 'scoutdroid'
Warning: replacing previous import by 'lubridate::union' when loading 'scoutdroid'
edit Добавлены некоторые подробности, чтобы помочь людям понять, что может происходить.
edit 2 Я также добавил файл DESCRIPTION
, хотя я не предоставляю полный пакет, который является собственностью.
изменить 3 Добавлено NAMESPACE
.
edit 4 Добавлены предупреждения, возникающие при использовании кнопки RStudio Build и Reload на вкладке "Сборка".
Ответы
Ответ 1
После некоторого диалога в комментариях мы выяснили, что пустые предупреждения, которые предоставляет load_all
, действительно инициируются при загрузке пакета из-за конфликтов имен функций.
Проблема заключается в том, что вы импортируете функцию из пакета, а затем перезаписываете эту функцию. Когда это произойдет, R выдает предупреждения, как вы видели, когда вы нажимали "Build and Reload" в RStudio:
Warning: replacing previous import by 'lubridate::intersect' when loading 'scoutdroid'
Warning: replacing previous import by 'lubridate::setdiff' when loading 'scoutdroid'
Warning: replacing previous import by 'lubridate::union' when loading 'scoutdroid'
Похоже, что load_all
может пытаться заглушить эти предупреждения (просто догадка), поэтому вы видите character(0)
вместо фактических предупреждений. (Эти конкретные предупреждения трудно заставить замолчать.)
Как правило, не рекомендуется импортировать полное пространство имен пакетов. Вместо этого вы должны импортировать только нужные символы. Подробнее см. этот пост.
Решение состоит в использовании importFrom
вместо import
в файле NAMESPACE.