as.formula in R doesn't seem to accept a name that starts with a number followed by _ -
how can avoid getting following error. as.formula() not seem take variable starting number , followed _
(underscore). generating these variables dynamically , @ stage not want go , change variable names.
lhsofformula = "25_dep" rhsofformula = "predvar1+predvar2+10_predvar3" as.formula(paste(lhsofformula , " ~ ", rhsofformula ))
error:
> as.formula(paste(lhsofformula , " ~ ", rhsofformula )) error in parse(text = x) : <text>:1:3: unexpected input 1: 25_ ^
you need wrap names in backticks, this
> lhsofformula <- "25_dep" > rhsofformula <- c("predvar1", "predvar2", "10_predvar3") > addq <- function(x) paste0("`", x, "`") > as.formula(paste(addq(lhsofformula) , " ~ ", paste(addq(rhsofformula),collapse=" + " ))) `25_dep` ~ predvar1 + predvar2 + `10_predvar3`
i vaguely remember there's function creating formulas, formulate
, maybe? can't find in quick search.
edit: @dwin, it's reformulate
, helps response not predictors. here rhs changed have valid name code works:
> lhsofformula = "25_dep" > rhsofformula = c("predvar1", "predvar2", "x10_predvar3") > reformulate(rhsofformula, lhsofformula) `25_dep` ~ predvar1 + predvar2 + x10_predvar3
edit: applying formula directly data frame add backticks automatically, using first column response
> d <- data.frame(`25_dep`=1:5, predvar1=1:5, predvar2=1:5, `10_predvar3`=1:5, check.names=false) > formula(d) `25_dep` ~ predvar1 + predvar2 + `10_predvar3`
the code function (stats:::formula.data.frame
) can adapted; uses as.name
this:
> lhsofformula <- "25_dep" > rhsofformula <- c("predvar1", "predvar2", "10_predvar3") > ns <- sapply(c(lhsofformula, rhsofformula), as.name) > formula(paste(ns[1], paste(ns[-1], collapse="+"), sep=" ~ ")) `25_dep` ~ predvar1 + predvar2 + `10_predvar3`
Comments
Post a Comment