2

Rでクラスを作成したかったのですが、いくつかのテーブルがあり、それらを関数でプロットしたかったのです。私が使用したコードは次のとおりです。

temp <- data.frame(gsbi1_30,gsbi1_29,ob_30,ob_29)

ここで、gsbi1_30、gsbi1_29、ob_30、ob_29 はテーブルです。

par(mfrow=c(2,2))
for (i in temp){ plot(i$ambtemp,type="o", pch=22, lty=2, col="brown",xlab = "Hour  2007/09/29" , ylab= "Ambient Tempreture" )
                 title(main="Hourly Mean, node 25", col.main="brown", font.main=1) }

そして、私はこのエラーを思いつきました:

Error in plot(i$ambtemp, type = "o", pch = 22, lty = 2, col = "brown",  : 
  error in evaluating the argument 'x' in selecting a method for function 'plot': Error in i$ambtemp : $ operator is invalid for atomic vectors

サンプルデータ:

-0.6 -1.2 -1.0 -0.8 -0.4 -0.2

他のすべてのサンプルは同じ構造にあります。

4

1 に答える 1

1

問題はtemp、そもそもdata.frameとして作成すべきではないということです。gsbi1_30、gsbi1_29、ob_30、ob_29自体がdata.framesである場合(私が思うに)、data.frame()それらの列を組み合わせてビッグデータ.frameを生成します。

代わりに、:を作成しlistます

temp <- list(gsbi1_30,gsbi1_29,ob_30,ob_29)

そしてそれを繰り返しますlapply()forループはRでは非常に非効率的です):

par(mfrow=c(2,2))
lapply(temp, function(i) {
    plot(i$ambtemp, type = "o", pch = 22, lty = 2, col = "brown", xlab = "Hour  2007/09/29" , ylab = "Ambient Tempreture")
})
于 2013-01-07T13:49:41.923 に答える