2017-06-04 9 views
0

を抑制するために、私は、次のコマンドrpy2:どのようにPythonのシェルでR出力

In [93]: x = robjects.r.bfast(data, h=0.1, season="none", max_iter=1) 
[1] 
"No seasonal model will be fitted!" 

を発行するとき、私は

[1] 
"No seasonal model will be fitted!" 

この非所望の出力を得るrpy2を使用することにどのような方法がありますこの出力を抑制する?この呼び出しを関数に、そしてapi呼び出しにラップしたいと思います。したがって、出力をstdoutにリダイレクトすることは望ましくありません。言い換えれば

、どのようrpy2の観光:

sink("/dev/null") 

robjects.r('sink("/dev/null")') 

より良い方法はありますか?

答えて

0

明らかに、bfastメソッドは、推奨されないコードである印刷しないラッパーのないコンソールにそのメッセージを条件付きで印刷します。プルリクエストで開発者にアプローチする。

このsolutionあたり、出力の文字列を返すベースRのcapture.outputを考えてください。

... 
from rpy2.robjects.packages import importr 

base = importr('base')  
bfast = importr('bfast') 

# NOTICE R's PERIODS CHANGED TO UNDERSCORE TO FIT PYTHON'S OBJECT MODEL 
x = base.capture_output(bfast(data, h=0.1, season="none", max_iter=1)) 
+0

なぜ 'robjects.r( 'sink("/dev/null ")')'を実行した方がいいですか? 'print'出力は気にしないのですが? – iamsterdam

+0

R docsは、 'capture.output()'が 'sink()'と 'with()'が 'attach()'であるという類推を使用しています。私の推測では、これらの比較の前者は地球環境に影響を与えないが、後者のものは特定の呼び出し元行に限定されているので、前後の行は影響を受けません。 – Parfait

関連する問題