11

重複の可能性:
R は、依存関係から startupMessages を抑制します

sink("NUL")/の使用について読んだことsink("/dev/null")がありますが、どちらも私が抱えている問題を解決していません。library()コマンドをsink("NUL")andで囲んだとしてもsink()、Rscript を呼び出すと、見たくないあらゆる種類の情報が出力されます。

Loading required package: Matrix
Loading required package: methods
Loading required package: lattice
Loaded glmnet 1.8

Loading required package: MASS
Loading required package: lme4

Attaching package: 'lme4'

The following object(s) are masked from 'package:stats':

    AIC, BIC

Loading required package: R2WinBUGS
Loading required package: coda

Attaching package: 'coda'

The following object(s) are masked from 'package:lme4':

    HPDinterval

Loading required package: abind
Loading required package: foreign

arm (Version 1.5-05, built: 2012-6-6)

Working directory is C:/Users/andrews/bootstraps/user/_branches/ER-PoC/Bootstraps/R


Attaching package: 'arm'

The following object(s) are masked from 'package:coda':

    traceplot

[1] "client=51"         "date='01-01-2011'"
[1] "01-01-2011"
[1] 51

最後の内容は、私が実際に必要とする唯一の出力であり、コマンドで抑制できる唯一の出力でもありsink()ます。この出力を抑制する引数が必要なようですRscript(コンソールでスクリプトを実行しても表示されませんsource)...入力はありますか?

4

1 に答える 1

8

アンドリュー、私は同じことに遭遇しsuppressMessages()、余分な出力をすべて削除するのではなく、作品をラップsink()する形で使用しました。capture.output()suppressMessages()

$ rscript --vanilla -e 'library(Rmpfr)'
Loading required package: methods
Loading required package: gmp
---->8----
Loading C code of R package 'Rmpfr': GMP using 32 bits per limb
---->8----


$ rscript --vanilla -e 'suppressMessages( library(Rmpfr) )'
Loading C code of R package 'Rmpfr': GMP using 32 bits per limb


$ rscript --vanilla -e 'msg.out <- capture.output( suppressMessages( library(Rmpfr) ) )'

Rmpfr パッケージをロードすると、接続を使用して適切に動作するいくつかの起動メッセージと、message接続を使用したあまり良くないメッセージが書き込まれoutputます。もちろん、自分で を作成して操作することもできますsink()が、それcapture.output()は既に設定されていることです。

おそらく、詳細な引数を設定して、もう少し制御できるようにすることが役立つでしょう::

$ cat sample.R
#!/c/opt/R/R-2.15.0/bin/rscript --vanilla

cmd_args <- commandArgs( TRUE );

if( length( cmd_args ) > 0 ) {
  eval( parse( text = cmd_args[1] ) )
}

if( exists( "verbose" ) ) {
  library( Rmpfr )
} else {
  msg.trap <- capture.output( suppressMessages( library( Rmpfr ) ) )
}

print("Hello")

どの利回り::

$ ./sample.R
[1] "Hello"


$ ./sample.R "verbose=TRUE"
Loading required package: methods
Loading required package: gmp

Attaching package: 'gmp'
---->8----
[1] "Hello"

そこにはたくさんの機能がありますが、少なくとも msg 出力を完全に抑制する方法を見ることができます。

それが役に立てば幸い。楽しむ!

于 2012-08-08T05:24:16.803 に答える