的端部執行從文檔?reg.finalizer
:reg.finalizer()中的R包不中的R在R對話
除其他外,它提供了一種方法的程序代碼來運行在R會話結束時不操作
.Last
。爲了在包中使用,在命名空間中的對象上設置終結器通常是一個好主意:然後它將在會話結束時或在命名空間卸載後立即被調用,如果在會話期間完成的話。
看來我可以使用reg.finalizer()
在R會話結束時運行某些代碼,但它不適用於我。我已經準備了一個最小的包在https://github.com/yihui/finalizer-test,其基本上包含以下代碼:
e = new.env()
reg.finalizer(e, function(e) {
message('Bye!')
}, onexit = TRUE)
如果我簡單地運行在交互式R對話上面的代碼和退出會話,我可以看到消息Bye!
,但如果我安裝上述軟件包(您可以使用devtools::install_github('yihui/finalizer-test')
),將其加載到R會話中,然後退出R會話,但看不到該消息。我想知道爲什麼在這種情況下沒有執行終結器。
FWIW,當我安裝包,我可以看到消息Bye!
:
$ R CMD INSTALL .
* installing to library ‘/Users/yihui/R’
* installing *source* package ‘finalizer’ ...
** R
** preparing package for lazy loading
No man pages found in package ‘finalizer’
** help
*** installing help indices
Bye!
** building package indices
** testing if installed package can be loaded
* DONE (finalizer)
我沒有看到消息,或者,當我運行以下命令:
$ R -e "library(finalizer)"
> library(finalizer)
>
>
$
'.onLoad'的伎倆!謝謝! –