From the right hand side of a formula for a mixed-effects model, expand terms with the double vertical bar operator into separate, independent random effect terms.

1 | ```
expandDoubleVerts(term)
``` |

`term` |
a mixed-model formula |

the modified term

Because `||`

works at the level of formula parsing, it
has no way of knowing whether a variable is a factor. It
just takes the terms within a random-effects term and literally splits them
into the intercept and separate no-intercept terms,
e.g. `(1+x+y|f)`

would be split into `(1|f) + (0+x|f) + (0+y|f)`

.
However, `||`

will fail to break up factors into separate terms;
the `dummy`

function can be useful in this case, although
it is not as convenient as `||`

.

`formula`

, `model.frame`

,
`model.matrix`

, `dummy`

.

Other utilities: `mkRespMod`

,
`mkReTrms`

, `nlformula`

,
`nobars`

, `subbars`

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | ```
m <- ~ x + (x || g)
expandDoubleVerts(m)
set.seed(101)
dd <- expand.grid(f=factor(letters[1:3]),g=factor(1:200),rep=1:3)
dd$y <- simulate(~f + (1|g) + (0+dummy(f,"b")|g) + (0+dummy(f,"c")|g),
newdata=dd,
newparams=list(beta=rep(0,3),
theta=c(1,2,1),
sigma=1),
family=gaussian)[[1]]
m1 <- lmer(y~f+(f|g),data=dd)
VarCorr(m1)
m2 <- lmer(y~f+(1|g) + (0+dummy(f,"b")|g) + (0+dummy(f,"c")|g),
data=dd)
VarCorr(m2)
``` |

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.

Please suggest features or report bugs with the GitHub issue tracker.

All documentation is copyright its authors; we didn't write any of that.