2012-01-12 23 views
6

私はlibsvm(Cプログラム)とインタフェースしているRパッケージe1071からR関数を呼び出しています。この関数は、C(printf)警告メッセージをRコンソールに渡しています。警告メッセージは形式(警告:...)であるのに対し、R警告メッセージは大文字になります(警告:...)。Cの警告メッセージを表示しないようにするR

R(sink、suppressWarnings、invisible)でこれらのメッセージを取り除くためにすべてを試しましたが、何も動作していないようです。

アイデア?

ありがとうございます!

+0

なぜそれほど曖昧ですか?あなたはRパッケージ経由でlibsvmに接続していますか?あるいは何かカスタムに取り組んでいますか? GCCはコンパイラですが、実行時の警告が出てくるのではないか、libsvmのCコードのprintfsかもしれません。 – Mark

+0

yep e1071パッケージ - あなたが正しいと思います。メッセージはprintfステートメントから来ています。私はCコードに行き、それを削除する必要がありますか?または私はRから何かできるのですか? – Michael

+0

私はマシンにlibsvmをインストールすることを覚えていません。私はRパッケージをダウンロードしました。これはlibsvmソースコードがRパッケージにあることを意味しますか? – Michael

答えて

9

機能は、再方向Rの出力が動作しない理由である代わりに、Rprintf/REprintf又はwarning標準入出力を使用します。適切な解決策は、代わりにR出力を使用するようにlibsvmの呼び出しを修正することです。

ハッキングstdioの出力が可能です - あなたは再直接することができ、独自のパイプに出力し、あなたがそれをやりたいが、a)は、それはCでの作業のビットだとあなたが必要とするため、b)は、それは危険です関数で処理した後に標準的な動作を復元することができます。たとえそれがエラーであっても、c)シェルで使用されている場合は、Rの出力と対話することができます。あなたが本当に奇抜、汚いまだ迅速な解決をしたい場合は

は、multicoreからcollect(parallel(..., silent=TRUE))[[1]]であなたの関数を実行する - それが抑制さ STDOUT(あなたにも標準エラー出力を抑制したい場合は、multicore:::closeStderr()を追加することができます)。

関連する問題