Разработка библиотеки/пакета - сообщение при загрузке

есть ли способ отобразить сообщение, когда пользователь загружает library(myCustomLibrary)? При загрузке я хочу отобразить сообщение, в котором пользователю сообщается, как запустить все тестовые функции.


person Yannick Wurm    schedule 03.02.2010    source источник


Ответы (3)


Да. Вы можете использовать функции .onLoad, .onAttach или .First.lib, чтобы делать все, что хотите, когда пакет загружается. Я предлагаю посмотреть справку по этим функциям. Вы бы использовали .onLoad с пространством имен и .First.lib без него.

Одно соглашение заключается в том, что люди часто помещают эти команды в отдельный файл zzz.R, который используется только для кода, связанного с пакетами.

person Shane    schedule 03.02.2010

Быстрые пункты:

  • если у вашего пакета есть NAMESPACE, то .onLoad() это место, где вы это делаете

  • если в вашем пакете нет NAMESPACE, то .First.lib() это место, где вы это делаете

  • в любом случае используйте packageStartupMessage() вместо cat(), чтобы у пользователей была возможность отключить это.

person Dirk Eddelbuettel    schedule 03.02.2010
comment
+1 действительно. Куда мне это положить? Какой файл моего пакета? - person Matt Bannert; 20.02.2014
comment
Раньше это имело значение, и люди использовали R/zzz.R, что сейчас в основном является соглашением. Я думаю, что вы можете сделать R/onLoad.R так же хорошо. - person Dirk Eddelbuettel; 20.02.2014
comment
в книге Хэдли упоминается, что пользователь должен использовать для этой цели .onAttach() вместо .onLoad(). Он не объяснил почему. r-pkgs.had.co.nz/r.html#r- код - person jangorecki; 01.09.2014

Обновленный ответ (2019 г.):

В разделе справки "Хорошая практика" в ?.onAttach рекомендация теперь такая:

Загрузка пространства имен [= в .onLoad] должна по возможности быть бесшумной, с сообщениями о запуске, заданными .onAttach. Эти сообщения (и любые важные сообщения из .onLoad) должны использовать packageStartupMessage, чтобы их можно было отключить там, где они будут отвлекать.

R CMD CHECK будет жаловаться, если .onLoad не молчит...

person R Yoda    schedule 20.03.2019