Takes the output of aggregateSimulation, and interpolates it into a regular time grid.
toRegularTime( x = NULL, time.column = "Time", interpolation.interval = NULL, columns.to.interpolate = c("Suitability", "Driver.A", "Pollen") )
| x | list of dataframes (generally the output of |
|---|---|
| time.column | character string, default value is "Time". |
| interpolation.interval | integer, in years, time length encompassed by each sample. |
| columns.to.interpolate | character string or character vector, columns of simulation output to be interpolated. Any subset of: "Pollen", "Population.mature", "Population.immature", "Population.viable.seeds", "Suitability", "Biomass.total", "Biomass.mature", "Biomass.immature", "Mortality.mature", "Mortality.immature", "Driver.A", "Driver.B". |
If x is a list of dataframes, the function returns a list with the same structure as the input list. If x is a dataframe, the function returns a dataframe. In any case, output dataframes have the columns "Time" (now regular), and any column listed in columns.to.interpolate. Important: as in the input data, the time column of the output data has lower time for oldest samples and higher time for newest samples.
This function fits a loess model of the form y ~ x, where y is any column given by columns.to.interpolate and x is the column given by the time.column argument. The model is used to interpolate column y on a regular time series of intervals equal to interpolation.interval. If x is a matrix-like list returned by aggregateSimulation (on results of simulateAccumulationRate and simulatePopulation), the first column of the matrix will already have a regular time column, and therefore nothing will be done with this column of the list.
# NOT RUN { #getting example data data(simulation) data(accumulationRate) #aggregating first simulation outcome sim.output.aggregated <- aggregateSimulation( simulation.output = simulation[1], accumulation.rate = accumulationRate, sampling.intervals = c(2,6)) #to regular time sim.output.aggregated <- toRegularTime( x=sim.output.aggregated, time.column ="Time", interpolation.interval = 10, columns.to.interpolate = c("Suitability", "Pollen") ) #comparing simulations par(mfrow = c(3,1)) #notice the subsetting of the given column of the input list plot(sim.output.aggregated[[1,1]]$Time, sim.output.aggregated[[1,1]]$Pollen, type = "l", xlim = c(500, 1000), main = "Annual" ) plot(sim.output.aggregated[[1,2]]$Time, sim.output.aggregated[[1,2]]$Pollen, type = "l", xlim = c(500, 1000), main = "2cm" ) plot(sim.output.aggregated[[1,3]]$Time, sim.output.aggregated[[1,3]]$Pollen, type = "l", xlim = c(500, 1000), main = "6cm" ) #check differences in nrow nrow(sim.output.aggregated[[1,1]]) #original data nrow(sim.output.aggregated[[1,2]]) #2cm nrow(sim.output.aggregated[[1,3]]) #6cm intervals # }