R/expand_fgrid-function.R

#' Data-filtering conditions as vectors
#'
#' Creates a factor grid dataframe of data-filtering conditions for passing to additional to additional factorial-design functions.
#'
#' @importFrom magrittr %>%
#' @include sweet_dots-function.R
#' @include expand_fgrid_helpers.R
#' @param .data a \code{factor.grid} dataframe generated by  or
#' @param ... additional arguments
#' @return a data.frame of factorial-based filtering condition or a  list for passing to additional
#' @family factorial-design functions
#' @export
#'
expand_fgrid <- function(.data, ...) {
  UseMethod("expand_fgrid", .data)
}

#' @rdname expand_fgrid
#' @export
expand_fgrid.default <-
  Vectorize(
    FUN = function(.data, ...)
      expand_fgrid(.data, ...),
    vectorize.args = c(".data"),
    SIMPLIFY = FALSE,
    USE.NAMES = FALSE
  )


#' @rdname expand_fgrid
#' @export

expand_fgrid.factor.grid <-
  function(.data,
           ...) {
    assertthat::validate_that(
      "factor.grid" %in% attr(.data, which = "class")
    )
    options("stringsAsFactors" = FALSE)
    ff_dots <-
      pryr::named_dots(...)
    lapply(ff_dots, eval, parent.frame())
    iv <-
      c(paste(colnames(.data)))
    data <-
      lapply(iv,grow_fgrid,.data=.data) %>%
      as.data.frame()
    data$num_lvls <- 0L
    data$label = NA_character_
    data$filter_form = NA_character_
    data["num_lvls"] <-
      number_of_levels(data)
    data["label"] <-
      label_levels(data)
    data["filter_form"] <-
      filter_from_levels(data)
    data<-
      drop_fgrid_levels(data)
  data
}
darrellpenta/dissertate documentation built on May 14, 2019, 6:10 p.m.