の最後に実行されません:reg.finalizer()RパッケージにRのドキュメント<code>?reg.finalizer</code>からRセッション
とりわけ、それが実行されるようにコードをプログラムする方法を提供しますRセッションの終わりに
.Last
を操作せずに。パッケージで使用するには、名前空間のオブジェクトにファイナライザを設定することをお勧めします。セッションの終わりに、またはセッション中に名前空間がアンロードされた直後に呼び出されます。
reg.finalizer()
は、Rセッションが終了したときに特定のコードを実行することができますが、私にとってはうまくいかないようです。私ならば、私は単にインタラクティブRセッションで上記のコードを実行して、セッションを終了すると
e = new.env()
reg.finalizer(e, function(e) {
message('Bye!')
}, onexit = TRUE)
、私はメッセージBye!
を見ることができますが、私は基本的に以下のコードが含まれていますhttps://github.com/yihui/finalizer-testで最小のパッケージを、用意してい上記のパッケージ(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'はトリックをしました!ありがとう! –