2012-04-30 9 views
2

私は、Rscript経由で実行される非対話型スクリプトで使用するためのパッケージを用意しています。しかし、私はまた、主にデバッグの目的で、インタラクティブなセッションでロードできるようにしたいと考えています。 Rscriptまたはその他の非対話型セッションで使用する場合、私はいくつかの初期化を行うために.onLoadを使用したいので、私はの線に沿って何かがあります(問題があっても、対話型セッションでは、インタラクティブである.onLoad and interactive - 予期しない動作?

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

を)は、.onLoadの内部でFALSEを返しています。 I build()install()(デベロッパーツールを使用して)インストールがメッセージ"interactive() = FALSE"とライブラリを接続するとき次に

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

:私は経由してこれをテストします。

アイデア? .onLoad()やinteractive()のドキュメンテーションは、何も関係していません。

フィル

答えて

1

あなたがbuild()を実行しinstall()した後、あなたはそれを再ロード、アン付けアンロードパッケージを試してみましたか?不思議な

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

detach("package:dummy", unload=T) 
library(dummy) 
# [1] "interactive() = TRUE" 
+0

'install'はそれがエラーなしで返されていても、パッケージを添付していないようでした。ここで

は、私が「ダミー」と呼ばれるパッケージでご.onLoad機能を含む、ことを行うとき、私は何を得るのです。私は 'library'経由でロードしようとしましたが、実際には" interactive()= TRUE "となりました。ありがとう! – evilphil