SeriesAggreg2.default <- function(TabSeries, Format, TimeFormat, NewTimeFormat, YearFirstMonth = 1, TimeLag = 0, verbose = TRUE, ..., simplify = FALSE) { if (!inherits(TabSeries, c("InputsModel", "OutputsModel"))) { stop("to be used with InputsModel', or 'OutputsModel' object") } if (!inherits(TabSeries, "GR") & inherits(TabSeries, "CemaNeige")) { ClassTabSeries <- class(TabSeries) zzz <- list(zzz = rep(NaN, length(TabSeries$DatesR))) TabSeries <- append(TabSeries, values = zzz, after = 1) class(TabSeries) <- ClassTabSeries lastCol <- "zzz" } if (inherits(TabSeries, "GR")) { if (inherits(TabSeries, "InputsModel")) { lastCol <- "PotEvap" } if (inherits(TabSeries, "OutputsModel")) { lastCol <- "Qsim" } } if (inherits(TabSeries, "CemaNeige")) { if (inherits(TabSeries, "InputsModel")) { CemaNeigeLayers <- TabSeries[grep("^Layer", names(TabSeries))] CemaNeigeLayers <- lapply(seq_along(CemaNeigeLayers), function(iLayer) { tmp <- CemaNeigeLayers[[iLayer]] names(tmp) <- paste(names(CemaNeigeLayers)[iLayer], names(tmp), sep = ".") tmp }) } if (inherits(TabSeries, "OutputsModel") ){ CemaNeigeLayers <- TabSeries$CemaNeigeLayers } CemaNeigeLayersAggreg <- lapply(CemaNeigeLayers, function(iLayer) { tmp <- cbind(TabSeries$DatesR, as.data.frame(iLayer)) res <- SeriesAggreg2(tmp, Format = Format, TimeFormat = TimeFormat, NewTimeFormat = NewTimeFormat, ConvertFun = .AggregConvertFun(gsub("[.].*", "", colnames(tmp)[-1L])), YearFirstMonth = YearFirstMonth, TimeLag = TimeLag, verbose = verbose) res <- res[, -1L] res <- as.list(res) }) } TabSeries2 <- TabSeries[1:which(names(TabSeries) %in% lastCol)] TabSeries2 <- as.data.frame.list(TabSeries2) NewTabSeries <- SeriesAggreg2(TabSeries = TabSeries2, Format = Format, TimeFormat = TimeFormat, NewTimeFormat = NewTimeFormat, ConvertFun = .AggregConvertFun(colnames(TabSeries2)[-1L]), YearFirstMonth = YearFirstMonth, TimeLag = TimeLag, verbose = verbose) NewTabSeries$zzz <- NULL if (simplify) { return(NewTabSeries) } else { res <- list() ClassFormat <- switch(substr(Format, start = nchar(Format), stop = nchar(Format)), h = "hourly", d = "daily", m = "monthly", Y = "yearly") ## to be consistent with InputsModel class and because plot.OutputsModel use the POSIXlt class NewTabSeries$DatesR <- as.POSIXlt(NewTabSeries$DatesR) res <- as.list(NewTabSeries) if (inherits(TabSeries, "CemaNeige")) { res$CemaNeigeLayers <- CemaNeigeLayersAggreg } class(res) <- gsub("hourly|daily|monthly|yearly", ClassFormat, class(TabSeries)) return(res) } }