R подавляет запуска сообщения из зависимости - PullRequest
35 голосов
/ 08 июня 2011

Одна из зависимостей моего пакета R отображает сообщения о загрузке при загрузке. Я хотел бы подавить эти сообщения при запуске.

Единственное исправление, которое я нашел до сих пор, - это удаление пакета с ошибками из строки Depends: в моем файле DESCRIPTION. Затем звоните suppressPackageStartupMessages(require("offendingPackage")) в .onLoad моего пакета.

Я бы предпочел оставить пакет с ошибками как часть моих Зависит, но кажется, что все, что указано в зависимости, загружается автоматически и поэтому не может быть подавлено.

Ответы [ 2 ]

38 голосов
/ 08 июня 2011

Функция suppressPackageStartupMessages() работает тогда и только тогда, когда на самом деле сообщения запуска пишутся с packageStartupMessage() - см. Страницу справки.

Во многих пакетах просто используется cat(), что можно считать ошибкой. В этом случае

 suppressMessages(library(foo))

работает лучше.

22 голосов
/ 08 июня 2011

Если вы работаете с пространствами имен, вы можете указать пакет в Imports и загрузить необходимые функции, используя import или importFrom.Таким образом, пакет не присоединяется, но необходимые функции могут быть загружены и использованы вашим пакетом.Без прикрепления сообщения запуска не выдаются, поэтому этот подход гарантирует, что вы не увидите никаких сообщений запуска пакетов, указанных в разделе «Импорт».

Убедитесь, что вы проверили, что вы импортировали все, что имеет значение.Если импортируемый вами пакет зависит от других пакетов, я не уверен, что все, что вам нужно для использования этих функций, импортируется.Возможно, вам придется немного озадачить, чтобы загрузить все необходимое.С другой стороны, использование Imports гарантирует, что любая проверка зависимостей будет выполнена правильно.

Другой вариант - не указывать пакет в Depends, а в Suggests в файле DESCRIPTION ииспользуйте опцию, которую дал вам @Dirk.Это даст правильную проверку зависимостей, если в install.packages() установлено значение 'dependencies = TRUE'.Но лично я думаю, что использование пространств имен намного более чисто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...