7

libsvm (C プログラム) と連携する R パッケージ e1071 から R 関数を呼び出しています。この関数は、C (printf) 警告メッセージを R コンソールに渡しています。これは、警告メッセージの形式が (warning:...) であるのに対し、R の警告メッセージは大文字 (つまり、Warning:...) であるためです。

R でこれらのメッセージを取り除くためにあらゆることを試みましたが (sink、suppressWarnings、invisible)、何も機能していないようです。

何か案は?

ありがとう!

4

1 に答える 1

11

この関数は、 /またはの代わりにstdioを使用します。これが、R 出力のリダイレクトが機能しない理由です。適切な解決策は、代わりに R 出力を使用するように呼び出しを修正することです。RprintfREprintfwarninglibsvm

stdio出力をハッキングすることは可能です。出力を独自のパイプにリダイレクトして、それを使ってやりたいことを実行できますが、a) C では少し作業が必要であり、b) 後で標準の動作を復元する必要があるため危険です。関数の使用はこれで完了です。シェルで使用すると、エラーが発生し、c) in が R の出力と相互作用する場合があります。

collect(parallel(..., silent=TRUE))[[1]]本当に奇抜で汚いが迅速な解決策が必要な場合は、から関数を実行します-stdoutmulticoreを抑制します( stderrも抑制したい場合は追加できます)。multicore:::closeStderr()

于 2012-01-12T21:48:53.287 に答える