1

ループを使用して一連の変数を相互par(ask=T)にプロットし、マウスをクリックするたびにプロットを更新したいと考えています。

次のコードは、plot()関数を使用して正常に動作します。

require(ggplot2)
df1 <- data.frame(id=seq(1,10,1)
    ,col1 = runif(10)
    ,col2 = runif(10)
    ,col3 = runif(10)
    ,col4 = runif(10)
    ,col5 = runif(10)
    ,col6 = runif(10)
    ,col7 = runif(10)
    ,col8 = runif(10)
    ,col9 = runif(10)
    ,col10 = runif(10)
    )

par(ask=TRUE)
for(i in 2:9){
colName2 <- paste("col",i,sep="")
plot(df1$col1, df1[,colName2])
flush.console()
}
par(ask=FALSE)

ただし、同じコードを実行して のqplot()代わりに使用するとplot()、プロット ウィンドウが更新されません。

理由や回避策はありますか?

4

1 に答える 1

3

ggplot2qplot(またはggplot)を呼び出すだけではグラフは表示されません。この関数によって返された値が出力されると (コマンドラインで発行されたときのデフォルトのように)、プロットが描画されます。ループ内では、関数の戻り値はデフォルトで出力されないため、何も表示されません。明示的に印刷すると表示されます。

これはR FAQ 7.22でカバーされています。

par(ask=TRUE)
for(i in 2:9){
  colName2 <- paste("col",i,sep="")
  print(qplot(df1$col1, df1[,colName2]))
  flush.console()
}
par(ask=FALSE)
于 2012-10-29T15:24:51.623 に答える