0

複数のプロットを作成するために、for ループを使用して複数のヘッダーをループしようとしています。Rから警告とエラーが発生し続けるため、ヘッダー変数をforループに渡すときに何が間違っているのかわかりません.

これが私が使用しているforループです:

dflist <- c('ABStemp', 'ABSelec', 'ABSheat')

for (i in dflist) {
  plot1<-contourplot(i ~ hour * weekday | month,
                data = HourlyTotal,
                       cuts = 200,
                labels=TRUE,
                contour=FALSE,
               drop.unused.levels = lattice.getOption("drop.unused.levels"),
                region = TRUE,
                pretty=FALSE,
                xlab = "",
                ylab = "Day of Week",
                col.regions=colorRampPalette(c("blue","yellow","red")),
                main = "Absolute Error (Temperature)",
                       layout=c(2,4),
                       as.table= TRUE)

    plot2<-contourplot(i ~ hour * weekday,
                aspect=0.3,
                data = HourlyTotal,
                cuts = 200,
                #labels=TRUE,
                contour=FALSE,
                region = TRUE,
                pretty=FALSE,
                xlab = "Hour of Day",
                ylab = "Day of Week",
                col.regions=colorRampPalette(c("blue","yellow","red"))
                       )

    plot3<-contourplot(i ~ hour * month, 
                aspect=0.3,
                data = HourlyTotal,
                cuts = 200,
                #labels=TRUE,
                contour=FALSE,
                region = TRUE,
                pretty=FALSE,
                xlab = "Hour of Day",
                ylab = "Month of Year",
                col.regions=colorRampPalette(c("blue","yellow","red"))
                       )

pdf(paste('Rplot',i,'.pdf'), width=8, height=12) 
print(plot1, more=TRUE) 
print(plot2, more=TRUE) 
print(plot3, more=FALSE) 
dev.off()    

}

上記でさまざまなバリエーションを試しましたが、毎回 i 変数が正しくループに渡されず、各トレリス プロットで NA が得られます。

私が使用しているデータセットは、SummaryDataにあります。また、私の完全なコードはオンラインで入手できます: http://danielcoakley.com/projects/energy-simulation/

ありがとう!

4

3 に答える 3

1

上記の @ zero323 によるソリューションのおかげで、次のコードは完全に機能するようになりました。

dflist <- c('ABStemp', 'ABSelec')

for (i in dflist) {
  plot1<-contourplot(as.formula(paste(i, "~ hour * weekday | month")),
                data = HourlyTotal,
                       cuts = 200,
                labels=TRUE,
                contour=FALSE,
               drop.unused.levels = lattice.getOption("drop.unused.levels"),
                region = TRUE,
                pretty=FALSE,
                xlab = "",
                ylab = "Day of Week",
                col.regions=colorRampPalette(c("blue","yellow","red")),
                main = "Absolute Error (Temperature)",
                       layout=c(2,4),
                       as.table= TRUE)

    plot2<-contourplot(as.formula(paste(i, "~ hour * weekday")),
                aspect=0.3,
                data = HourlyTotal,
                cuts = 200,
                #labels=TRUE,
                contour=FALSE,
                region = TRUE,
                pretty=FALSE,
                xlab = "Hour of Day",
                ylab = "Day of Week",
                col.regions=colorRampPalette(c("blue","yellow","red"))
                       )

    plot3<-contourplot(as.formula(paste(i, "~ hour * month")), 
                aspect=0.3,
                data = HourlyTotal,
                cuts = 200,
                #labels=TRUE,
                contour=FALSE,
                region = TRUE,
                pretty=FALSE,
                xlab = "Hour of Day",
                ylab = "Month of Year",
                col.regions=colorRampPalette(c("blue","yellow","red"))
                       )

    plot4<-contourplot(as.formula(paste(i, "~ Meas.DryBlb * hour")), 
                aspect=1,
                       contour=FALSE,
                       region = TRUE,
                data = HourlyTotal,
                       )

    png(paste('Model\\Current Model\\Results\\',i,'.png'), width = 3600, height = 5000, units = "px", res = 400) 
    print(plot1, position = c(0,.5,1,1), more=TRUE)
    print(plot2, position = c(0,.25,1,.5), more=TRUE)
    print(plot3, position = c(0,0,1,.25), more=FALSE)
    dev.off()

}
于 2013-10-26T02:41:10.167 に答える
0

問題は、文字列"ABStemp"がデータ フレーム内の名前として解釈されていないことです。解決策に加えてas.formula()、文字列参照が問題ないコンテキストを試すことができます。

iへの呼び出しを にcontourplot置き換えますHourlyTotal[,i]。これは で動作しggplotます。ラティスについてはわかりません。

于 2013-10-26T01:59:39.857 に答える