是否可以将merModLmerTest
中的lmerTest
对象转储为merMod
中的lme4
个对象?我有许多用例需要在格式之间切换。
根据lmerTest文档:
merModLmerTest包含lme4包的merMod类,并重载anova和summary函数。
但是,我无法弄清楚继承是如何工作的。
答案 0 :(得分:0)
lmerModLmerTest
对象与merMod
对象几乎相同,但是有一些额外的插槽。减少它们的方法也许是一种优雅的方法,但是我是用蛮力做到的(由于new()
函数所做的一些评估,所以我觉得有些棘手。)
示例:
library(lme4)
fm0 <- lmer(Reaction ~ Days + (Days|Subject), sleepstudy)
library(lmerTest)
fm1 <- as(fm0,"lmerModLmerTest")
这可能是错误的设置方式(应使用setAs()
等),但是...
as.merMod.lmerModLmerTest <- function(x) {
r <- list(Class="lmerMod")
for (s in names(getSlots("merMod"))) {
r[[s]] <- slot(x,s)
}
r$resp <- quote(x@resp)
r$call <- quote(x@call) ## protect from evaluation
do.call(new,r)
}
尝试一下:
fm2 <- as.merMod.lmerModLmerTest(fm1)
all.equal(fm0,fm2) ## TRUE