R подавляет запуска сообщения из зависимости

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

Единственное исправление, которое я обнаружил до сих пор, - это удаление пакета с ошибками из строки Depends: в моем файле ОПИСАНИЕ Потом звоню suppressPackageStartupMessages(require("offendingPackage")) в .onLoad моего пакета.

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

2 ответа

Решение

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

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

Другой вариант - не указывать пакет в Depends, но в Suggests в файле ОПИСАНИЕ, и используйте параметр @Dirk дал вам. Это даст правильную проверку зависимостей, если в зависимости установлено "TRUE". install.packages(), Но лично я думаю, что использование пространств имен намного более чисто.

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

Многие пакеты просто используют cat(), который можно считать буглет. В таком случае

 suppressMessages(library(foo))

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

Быстрый способ сделать это встроенным в скрипт или среду - переопределить library()/require() завернуть suppressPackageStartupMessages() метод:

> library(here) # This shows a message
here() starts at /home/z/development/
> require(here) # This shows a message
Loading required package: here
here() starts at /home/y

Обходной путь:

> flibrary <- library
> library <- function(...) suppressPackageStartupMessages(flibrary(...))
> library(here) # No messages
> 
> frequire <- require
> require <- function(...) suppressPackageStartupMessages(frequire(...))
> require(here) # No messages
> 
Другие вопросы по тегам