2015-08-31 5 views
2

У меня есть файл csv содержит почасовую концентрацию PM10 от 1 марта до 7 марта. Please, download from here. Я построил всю вариограмму (всего 161) в цикле с помощью пакета automap.Как построить несколько графиков вариограммы с другим названием, используя функцию loop/lapply?

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]] 

Здесь я могу получить индивидуальный заговор vars[[1]],vars[[2]]... и т.д., но все вариограмма имеет такое же название. Теперь я хочу построить все изображение вариограммы с другим заголовком в цикле. Я хочу, чтобы название моего вариограммы было «Вариограмма на 2012-03-01 1.00», «Вариограмма на 2012-03-01 2.00» ..... и т. Д.

a<-as.POSIXct(names(seoul1to7_split), format="%Y%m%d%H") 
a 
hours<-substr(a,1,16) 
hours 

Я держу желаемое другое название в hours переменной как "2012-03-01 1:00", "2012-03-01 2:00", "2012-03-01 3:00". ..и т.д.

Как я могу построить все вариограммы (всего 161) с другим заголовком, используя цикл?

ответ

0

Хитрость заключается в том, чтобы использовать png и dev.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() 
}) 
+0

На самом деле я хочу другое название каждого вариограммных also..I отредактировали свой титул вопрос .. – Orpheus

Смежные вопросы