#' Coerce Environment to List (Recursively). #' #' Recursively coerces an \code{environment} to a \code{list}. #' #' @param src A an \code{environment} that should be coerced. #' @param ... Further args. #' @return A named \code{list} that corresponds to the recursively coerced #' initial \code{environment}. #' @callGraphPrimitives #' @author Janko Thyson \email{janko.thyson.rstuff@@googlemail.com} #' @seealso \code{\link{flatten}} #' @example inst/examples/envirAsList.R envirAsList <- function( src, ... ){ if(class(src) == "environment"){ envir <- new.env() src <- as.list(src) # LOOP OVER ELEMENTS out <- lapply(seq(along=src), function(x.src){ envir$names <- c(envir$names, names(src[x.src])) # RECURSIVE FLATTENING out <- envirAsList(src[[x.src]]) return(out) }) names(out) <- envir$names # / } else { out <- src } return(out) }