2

Rscript を介して実行される非対話型スクリプトで使用するためのパッケージがあります。しかし、主にデバッグ目的で、インタラクティブなセッションでロードできるようにしたいと考えています。Rscript またはその他の非対話型セッションで使用する場合、.onLoad を使用して初期化を行いたいので、次のようなものがあります。

.onLoad <- function(libname, pkgname) {
    if ( !interactive() ) { 
        # Do some stuff 
    } else {
    # Do something slightly different
}

問題は、インタラクティブ セッションであっても、interactive() が .onLoad 内で FALSE を返すことです。私はこれを次の方法でテストします:

.onLoad <- function(libname, pkgname) {
    print( paste( "interactive() = ", interactive(), collapse="" ) )
}

次にbuild()install()(devtoolsを使用して)インストールすると、ライブラリがメッセージ付きで添付されます"interactive() = FALSE"

何か案は?.onLoad() のドキュメントも interactive() のドキュメントも、関連することは何も言いません。

フィル

4

1 に答える 1

1

build()とを実行した後、パッケージをアンinstall()アタッチしてアンロードし、再ロードしましたか?

.onLoad「ダミー」と呼ばれるパッケージに関数を含めると、次のようになります。

 library(devtools)
 document('dummy')
 build('dummy')
 install('dummy')
 # ...
 # [1] "interactive() =  FALSE"

 detach("package:dummy", unload=T)
 library(dummy)
 # [1] "interactive() =  TRUE"
于 2012-04-30T17:51:43.017 に答える