如何使用循环/ lapply函数绘制具有不同标题的多个变异函数图?

时间:2015-08-31 04:11:11

标签: r loops lapply automap

我有一个csv文件包含1月3日到3月3日的每小时PM10浓度。 {{3}}我已经通过automap包在循环中绘制了所有变异函数(总共161)。

addBottomLayerToTheView(anyView)

在这里,我可以通过library(sp) library(gstat) library(rgdal) library(automap) library(latticeExtra) seoul1to7<-read.csv("seoul1to7.csv") seoul1to7[seoul1to7==0] <-NA seoul1to7 <- na.omit(seoul1to7) seoul1to7_split<-split(seoul1to7,seoul1to7$time) seq(seoul1to7_split) vars<-lapply(seq(seoul1to7_split), function(i) { dat<-seoul1to7_split[[i]] coordinates(dat)<-~LON+LAT proj4string(dat) <- "+proj=longlat +datum=WGS84" dat <- spTransform(dat, CRS("+proj=utm +north +zone=52 +datum=WGS84")) variogram<-autofitVariogram(log(PM10)~1,dat, model="Sph") plot<- plot(variogram,plotit=FALSE, asp=1) return(plot) }) vars[[1]] vars[[2]] 等获得单独的情节,但所有变异函数都具有相同的标题。现在,我想在循环中绘制具有不同标题的所有变异函数图像。我想要我的变异函数标题,&#34; Variogram for 2012-03-01 1.00&#34;,&#34; Variogram for 2012-03-01 2.00&#34; .....等等。

vars[[1]],vars[[2]]...

我在a<-as.POSIXct(names(seoul1to7_split), format="%Y%m%d%H") a hours<-substr(a,1,16) hours 变量中保留了我想要的不同标题,例如&#34; 2012-03-01 01:00&#34;,&#34; 2012-03-01 02:00&#34;,& #34; 2012-03-01 03:00&#34; ...等

如何使用循环绘制具有不同标题的所有变异函数(总共161)?

1 个答案:

答案 0 :(得分:0)

诀窍是使用pngdev.off

library(automap)
data(meuse)
coordinates(meuse) = ~x+y

fit_for_model_type = function(model_type) {
    return(autofitVariogram(log(zinc) ~ dist, meuse, model = model_type))
}

model_options = c("Sph", "Exp", "Gau", "Ste")
list_of_variogram_models = lapply(model_options, fit_for_model_type)
names(list_of_variogram_models) = model_options
lapply(names(list_of_variogram_models), function(x) {
    png(filename = sprintf('%s.png', x))
    print(plot(list_of_variogram_models[[x]]))
    dev.off()
})