
Last chance! 50% off unlimited learning
Sale ends in
Parse a formula into fixed formula and random effect terms, treating 'special' terms (of the form foo(x|g[,m])) appropriately
splitForm(
formula,
defaultTerm = "us",
allowFixedOnly = TRUE,
allowNoSpecials = TRUE,
debug = FALSE,
specials = findReTrmClasses()
)noSpecials(term, delete = TRUE, debug = FALSE, specials = findReTrmClasses())
a list containing elements fixedFormula
;
reTrmFormulas
list of x | g
formulas for each term;
reTrmAddArgs
list of function+additional arguments, i.e. list()
(non-special), foo()
(no additional arguments), foo(addArgs)
(additional arguments); reTrmClasses
(vector of special functions/classes, as character)
a formula containing special random effect terms
default type for non-special RE terms
(logical) are formulas with no RE terms OK?
(logical) are formulas with only standard RE terms OK?
debugging mode (print stuff)?
language object
Steve Walker
Taken from Steve Walker's lme4ord, ultimately from the flexLambda branch of lme4 <https://github.com/stevencarlislewalker/lme4ord/blob/master/R/formulaParsing.R>. Mostly for internal use.
splitForm(~x+y) ## no specials or RE
splitForm(~x+y+(f|g)) ## no specials
splitForm(~x+y+diag(f|g)) ## one special
splitForm(~x+y+(diag(f|g))) ## 'hidden' special
splitForm(~x+y+(f|g)+cs(1|g)) ## combination
splitForm(~x+y+(1|f/g)) ## 'slash'; term
splitForm(~x+y+(1|f/g/h)) ## 'slash'; term
splitForm(~x+y+(1|(f/g)/h)) ## 'slash'; term
splitForm(~x+y+(f|g)+cs(1|g)+cs(a|b,stuff)) ## complex special
splitForm(~(((x+y)))) ## lots of parentheses
splitForm(~1+rr(f|g,n=2))
splitForm(~1+s(x, bs = "tp"))
noSpecials(y~1+us(1|f))
noSpecials(y~1+us(1|f),delete=FALSE)
noSpecials(y~us(1|f))
noSpecials(y~us(1|f), delete=FALSE)
noSpecials(y~us(1|f), debug=TRUE)
noSpecials(y~us+1) ## should *not* delete unless head of a function
noSpecials(~us(1|f)+1) ## should work on a one-sided formula!
noSpecials(~s(stuff) + a + b, specials = "s")
Run the code above in your browser using DataLab