R Under development (unstable) (2023-11-01 r85459 ucrt) -- "Unsuffered Consequences" Copyright (C) 2023 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > if (.Platform$OS.type != "windows") { + library(lme4) + #### tests of getME() + + ### are names correct? -------------- + if(getRversion() < "2.15") + paste0 <- function(...) paste(..., sep = '') + hasInms <- function(x) grepl("(Intercept", names(x), fixed=TRUE) + matchNms <- function(fm, PAR) { + stopifnot(is.character(vnms <- names(fm@cnms))) + mapply(grepl, paste0("^", vnms), names(PAR)) + } + chkIMod <- function(fm) {## check "intercept only" model + b1 <- getME(fm,"beta") + f1 <- fixef(fm) + stopifnot(hasInms(f1), f1 == b1, + hasInms(t1 <- getME(fm,"theta")), matchNms(fm, t1)) + } + + fm1 <- lmer(diameter ~ (1|plate) + (1|sample), Penicillin) + chkIMod(fm1) + + fm2 <- lmer(angle ~ recipe * temperature + (1|recipe:replicate), cake) + stopifnot(fixef(fm2) == getME(fm2,"beta")) + getME(fm2,"theta") + + getME(fm3 <- lmer(Reaction ~ Days + (Days|Subject), sleepstudy), + "theta") + getME(fm4 <- lmer(Reaction ~ Days + (1|Subject) + (0+Days|Subject), sleepstudy), + "theta") + + ## internal consistency check ensuring that all allowed 'name's work (and are not empty): + (nmME <- eval(formals(lme4:::getME.merMod)$name)) + chkMEs <- function(fm, nms) { + stopifnot(is.character(nms)) + str(parts <- sapply(nms, getME, object = fm, simplify=FALSE)) + isN <- sapply(parts, is.null) + stopifnot(identical(names(isN), nms), !any(isN)) + } + + chkMEs(fm1, nmME) + chkMEs(fm2, nmME) + chkMEs(fm3, nmME) + chkMEs(fm4, nmME) + + ## multiple components can now be retrieved at once + gg <- getME(fm2,c("theta","beta")) + gg2 <- getME(fm2,c("theta","beta","X")) + + ## list of Zt for each random-effects factor + lapply(getME(fm2,c("Ztlist")),dim) + ## Cholesky factors returned as a list of matrices + getME(fm1,"ST") + getME(fm2,"ST") + + ## distinction between number of RE terms + ## and number of RE grouping factors + stopifnot(getME(fm2,"n_rtrms")==1) + stopifnot(getME(fm2,"n_rfacs")==1) + + lapply(getME(fm4,c("Ztlist")),dim) + stopifnot(getME(fm4,"n_rtrms")==2) + stopifnot(getME(fm4,"n_rfacs")==1) + + stopifnot(getME(fm1,"sigma")==sigma(fm1)) + } ## skip on windows (for speed) > > proc.time() user system elapsed 0.10 0.04 0.14