0

重複の可能性:
R 関数内から複数のグラフィックスを生成する

パッケージ格子からのヒストグラムを使用して、データ内のすべての変数からのすべてのプロットを保存しようとしています。直接実行すると機能しますが、関数を使用すると図が作成されません。私の機能は次のとおりです。

plotHistByGroups<-function(data, res)
{
   jpeg("plots/histBy%03d.jpg", quality=100)
   finalres<-as.factor(res)
   names<-colnames(data)
   library(lattice)
   for( i in 1: length(data))
   {
     title<-paste(names[i], "~")
     title<-paste(title, length(levels(finalres)))
     title<-paste(title, "clusters")
     histogram(~data[,i] | finalres, data, xlab=names[i], main=title)    
   }
   dev.off()
}

関数を呼び出すと、空の図が 1 つだけ取得されます。しかし、直接実行すると、すべての数値が得られます。

jpeg("plots/histBy%03d.jpg", quality=100)
histogram(~data[,1] | finalres, data, xlab=names[1], main=title)    
histogram(~data[,2] | finalres, data, xlab=names[2], main=title)    
histogram(~data[,3] | finalres, data, xlab=names[3], main=title)    
...
dev.off()

ベア

4

1 に答える 1

2

これを a でラップする必要がprint(histogram(...))あります。はい、これはR FAQ の質問 7.22です。

7.22 ラティス/トレリス グラフィックスが機能しないのはなぜですか?

最も可能性の高い理由は、R にグラフを表示するように指示するのを忘れたことです。xyplot() などのラティス関数はグラフ オブジェクトを作成しますが、表示しません (ggplot2 グラフィックスと S-PLUS の Trellis グラフィックスについても同様です)。グラフ オブジェクトの print() メソッドは、実際の表示を生成します。これらの関数をコマンド ラインで対話的に使用すると、結果が自動的に出力されますが、source() または独自の関数内で明示的な print() ステートメントが必要になります。

于 2012-09-20T14:52:13.013 に答える