R/separate_canopy_output.R

Defines functions separate_canopy_output

Documented in separate_canopy_output

#' Separate Canopy Output by Layers
#'
#' Function separates RHESSys canopy output by canopy and outputs a data frame that
#' may be analyzed via \code{ggplot}.
#'
#' @param data Data frame with variables that need to be separated.
#' @param num_canopies Number of canopy (stratum) per patch
#'
#' @export
separate_canopy_output <- function(data, num_canopies = 2){

  select_rows <- function(x,y,z) y[seq(x,nrow(y),z), , drop=FALSE]
  variables_by_canopy <- lapply(seq_len(num_canopies), select_rows, y=data, z=num_canopies)
  names_by_canopy <- lapply(seq_len(num_canopies), function(x,y) rep(x,nrow(y)), y=variables_by_canopy[[1]])

  tmp <- lapply(seq_len(num_canopies), function(x,y,z) cbind(y[[x]],canopy_layer=z[[x]]), y=variables_by_canopy, z=names_by_canopy)
  canopy_df <- Reduce(rbind, tmp)

  return(canopy_df)
}
ryanrbart/RHESSysIOinR documentation built on July 20, 2023, 12:28 a.m.