#' Extends a formula with predictors
#'
#' @param formula A formula. If it is
#' not a formula, the formula is internally reset to \code{~0}.
#' @param predictors A character vector of variable names.
#' @param auxiliary A logical that indicates whether the variables
#' listed in \code{predictors} should be added to the formula as main
#' effects. The default is \code{TRUE}.
#' @param include.intercept A logical that indicated whether the intercept
#' should be included in the result.
#' @return A formula
#' @keywords internal
extend.formulaDS <- function(formula = ~ 0,
predictors = NULL,
auxiliary = TRUE,
include.intercept = FALSE, ...) {
if (!is.formula(formula)) formula <- ~ 0
# handle dot in RHS
if (hasdot(formula)) {
if (length(predictors) > 1)
fr <- as.formula(c("~", paste(predictors, collapse = "+")))
else
fr <- ~ 0
} else
fr <- reformulate(c(".", predictors))
if (auxiliary) formula <- update(formula, fr, ...)
if (include.intercept) formula <- update(formula, ~ . + 1, ...)
formula
}
handle.oldstyle.formulas <- function(formulas, data) {
# converts old-style character vector to formula list
oldstyle <- length(formulas) == ncol(data) && is.vector(formulas) &&
is.character(formulas)
if (!oldstyle) return(formulas)
formulas[formulas != ""] <- "~ 0"
fl <- as.list(formulas)
names(fl) <- names(formulas)
fl
}
is.empty.model.data <- function (x, data)
{
tt <- terms(x, data = data)
(length(attr(tt, "factors")) == 0L) & (attr(tt, "intercept") == 0L)
}
lhs <- function(x) all.vars(update(x, . ~ 1))
is.formula <- function(x){
inherits(x, "formula")
}
hasdot <- function(f) {
if(is.recursive(f)) {
return(any(sapply(as.list(f), hasdot)))
} else {
f == as.symbol(".")}
}
expand.dots <- function(formula, data) {
if (!is.formula(formula)) return(formula)
if (!hasdot(formula)) return(formula)
y <- lhs(formula)
x <- setdiff(colnames(data), y)
fs <- paste(paste(y, collapse = "+"), "~", paste(x, collapse = "+"))
as.formula(fs)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.