2016-08-27 5 views
0

関数がplotを使用して関数内にグラフを描画し、非表示のオブジェクトも返す場合は、オブジェクトを保持してプロットを表示しません。関数によって描画されたプロットを表示せず、目に見えないオブジェクトのみを取得する方法はありますか?

some_func <- function() { 
    plot(1:10) 
    return(invisible(10)) 
} 

my_value <- some_func() # R/Rstudio draws a plot! don't want that 
+0

Nixマシンではこれが有効です。 'graphics.off()' –

答えて

3

私はあなただけのいくつかの副作用のためにplotを呼び出したいおそらく、なぜあなたはこれをやっているかわかりません。通常は、プロット関数から戻り値を取得することに興味がある場合は、たとえばboxplotを使用して統計を計算します。

いくつかのプロット方法では、使用できる引数plot = FALSEがあります。たとえばボックスプロットではboxplot(..., plot = FALSE)と指定できます。

しかし、これは基本的なプロット関数では機能しません。他の選択肢は、オブジェクトを描画するのではなく、プロットをオブジェクトに割り当てることを可能にするlatticeやggplotなどの異なるプロットライブラリを使用することです。しかし、ベースプロットでこれを行う必要が本当に必要な場合は、あなたが考えることができる唯一の方法は、画面以外のデバイスに出力を送信することです。たとえば、出力を一時的な.pngファイルに送信してからファイルを削除するには、次のようにします。

some_func <- function() { 
    png("temp.xyz") 
    a=plot(1:10,) 
    dev.off() 
    file.remove("temp.xyz") 
    return(invisible(10)) 
} 

my_value <- some_func() 
関連する問題