2017-11-28 7 views
0

多くのものをコンソールに表示するパッケージの関数を使用しています。この機能を使用できますが、すべての印刷コマンドを無視できますか?関数を呼び出すことはできますが、print() - コマンドはすべて無視できますか?

例:

f <- function(x){ 
print("Starting process 1/5") 
print("Starting process 2/5") 
print("Starting process 3/5") 
print("Starting process 4/5") 
print("Starting process 5/5") 
Save <<- x+2 
} 

所望の出力:

保存は、x + 2に設定されているが、何もコンソールに出力されません。

スタッフは私が試してみましたが、うまくいきませんでした:

invisible(f(1)) 

sink(f(1)) 

追加パッケージなしまたは関数自体を変更することができるbeeingてなく、これを解決する方法はありますか?

+1

を試してください。 '' 'プリント=関数(X){}' ''。私は少し汚れているので、私は別の関数でこれをラップします。 – rsmith54

+2

関数が 'message'の代わりに' print'を使ってメッセージをコンソールに出力することは奇妙に思えます。関数が 'message'を使用する場合、単に' suppressMessages'を使うのは簡単です。 (これは問題を助けるわけではありませんが、あまりにも冗長な関数に関するコメントです) – TJGorrie

+0

'capture.output(f(1)、file = 'NUL')の意味は – AwaitedOne

答えて

2

あなたが印刷を再定義することができinvisible(capture.output(f(1)))

+0

魅力のように動作します、ありがとう! – Pablowa

0

sinkを使用するための正しい方法は、たとえば、すべてのコンソール出力が印刷されるために、ファイルの設定にある

sink("r-output") 

ファイルにこの行の後に、そのすべてのコンソール出力を書き始めるためにRを教えてくれます現在のディレクトリにr-output(ファイル名を任意に変更できます)。この意志という

sink() 

注:あなたが再びコンソールのR出力を書き始めたい場合は

、もう一度関数を呼び出すことではなく、ファイル名を提供せずにsinkプロセスを停止する必要があります。 printなどの出力をこのファイルに書き込みますが、メッセージ、警告、またはエラーはコンソールに出力されます。最初にsinkを呼び出すときにtype = c("output","message")と指定して送信することもできます。

+0

です。つかいます。 sink()の仕組みを明確にしてくれてありがとう。 – Pablowa

1
junk <- capture.output(f(1)) 
Save 
# 3 
+0

本当にありがとう! – Pablowa

関連する問題