1つのコマンド(この場合はapply
関数)の出力を抑制しようとしています。
使用せずにこれを行うことは可能sink()
ですか?以下に説明する解決策を見つけましたが、可能であれば1行でこれを実行したいと思います。
1つのコマンド(この場合はapply
関数)の出力を抑制しようとしています。
使用せずにこれを行うことは可能sink()
ですか?以下に説明する解決策を見つけましたが、可能であれば1行でこれを実行したいと思います。
capture.output
。または*_ply
、plyrパッケージから使用してください。
lapply
出力を出力せずになどの適用関数を実際に実行しようとしている場合plyr
は、彼のパッケージの「l_ply」がおそらく最も適切な選択です。
回答:
なぜこれを行わないのかは明確ではありませんがsink
、invisible()
関数内の任意のコマンドをラップすることができ、出力が抑制されます。例えば:
1:10 # prints output
invisible(1:10) # hides it
それ以外の場合は、セミコロンと括弧を使用して、いつでも1行にまとめることができます。
{ sink("/dev/null"); ....; sink(); }
invisible()
式の出力を抑制するだけで、sink()
ワンライナーではありません。
apply
、次の質問のように、の戻りが抑制されますinvisible(apply(matrix(1:10), 1, as.numeric))
。
{ sink("/dev/null"); ....; sink(); }
、私は間違いなく希望capture.output
として、capture.output
効果的に正確に上記の場合と同じかなり良く、(ソースを見て、それが上記の方法のようにシンクを呼び出して、それに加えて周りにいくつかの素晴らしいもの)。
idw
Windowsの機能では動作しません。最善の解決策は使用することだと思いますsink
capture.output()
関数を使用します。これは1回限りのように機能しsink()
、とは異なりinvisible()
、メッセージの印刷以上のものを抑制することができます。/dev/null
UNIXまたはNUL
Windowsでfile引数をに設定します。たとえば、Dirkのメモを考えてみましょう。
> invisible(cat("Hi\n"))
Hi
> capture.output( cat("Hi\n"), file='NUL')
>
capture.output(x <- log(2))
その後x
の値はlog(2)
...
Rは、割り当てられていない式の出力のみを自動的に出力するため、の結果をapply
変数に割り当てるだけで、出力されません。
print()
またはcat()
が含まれています。
次の関数は、必要なことを正確に実行する必要があります。
hush=function(code){
sink("NUL") # use /dev/null in UNIX
tmp = code
sink()
return(tmp)
}
たとえば、次の関数を使用します。
foo=function(){
print("BAR!")
return(42)
}
ランニング
x = hush(foo())
xに42を割り当てますが、「BAR!」は出力されません。STDOUTへ
UNIX OSの場合よりも、「NUL」を「/ dev / null」に置き換える必要があることに注意してください。
回答に対するハドリーのコメントを作成する(より見やすくすることを望んでいます)。plyr
パッケージを使用することで、印刷せずにアプライファミリーを使用することができます
x <- 1:2
lapply(x, function(x) x + 1)
#> [[1]]
#> [1] 2
#>
#> [[2]]
#> [1] 3
plyr::l_ply(x, function(x) x + 1)
reprexパッケージ(v0.3.0)によって2020-05-19に作成されました
invisible(cat("Dataset: ", dataset, fill = TRUE))
invisible(cat(" Width: " ,width, fill = TRUE))
invisible(cat(" Bin1: " ,bin1interval, fill = TRUE))
invisible(cat(" Bin2: " ,bin2interval, fill = TRUE))
invisible(cat(" Bin3: " ,bin3interval, fill = TRUE))
行の終わりまたは次の行にNULLなしの出力を生成します
Dataset: 17 19 26 29 31 32 34 45 47 51 52 59 60 62 63
Width: 15.33333
Bin1: 17 32.33333
Bin2: 32.33333 47.66667
Bin3: 47.66667 63