когда я загружаю библиотеку (с NAMESPACE
), функции .onLoad
и .onAttach
вызываются, как и .onUnload
, когда я отсоединяю библиотеку, выгружая пространство имен.
Мне было интересно, определит ли R способ, который избавил бы меня от необходимости отсоединять / выгружать библиотеку вручную в каждом из моих сценариев, использующих библиотеку xxx
.
для этого мне понадобится библиотечный хук , который проверяется и вызывается, когда скрипт , использующий библиотеку, заканчивается, если есть такая вещь. Я не нашел его, и я всегда думаю, что есть причина, почему вещи есть, а также почему их нет.
Я понимаю, из файлов справки и из комментариев, что есть .Last
хук скрипта , который я могу использовать, но я ищу что-то похожее на конструктор / деструктор: как только библиотека «выходит из области видимости» (поскольку скрипт, использующий ее, заканчивается), будет вызван «деструктор библиотеки».
другими словами, мне интересно, возможно ли вообще, чтобы скрипт содержал только две строки
#!/usr/bin/Rscript
library(xxx)
и библиотека xxx
с NAMESPACE
и файл zzz.R
, содержащий среди прочего этот
.onLoad <- function(libpath, pkgname) {
packageStartupMessage("loading ", libpath, '::', pkgname)
}
.onUnload <- function(pkgpath) {
packageStartupMessage("unloading ", pkgpath)
}
производит этот вывод
loading /usr/local/lib/R/site-library::xxx
unloading /usr/local/lib/R/site-library/xxx
или если мне нужно явно вызвать detach('package:NenS', unload=TRUE)
в каждом сценарии, используя библиотеку xxx
.