我想提取模型串列的模型呼叫。該串列包括 glm 和 glmm。
這似乎適用于 glm 物件,但不適用于 glmerMod 物件
gm1 <- glm(cbind(incidence, size - incidence) ~ period,
data = cbpp, family = binomial)
gm1$call
>glm(formula = cbind(incidence, size - incidence) ~ period, family = binomial,
data = cbpp)
gm2 <- glmer(cbind(incidence, size - incidence) ~ period (1 | herd),
data = cbpp, family = binomial)
gm2$call
>Error in gm2$call : $ operator not defined for this S4 class
我可以看到,當我在 rstudio 環境窗格中單擊 glmerMod 物件時,該物件似乎確實具有與其關聯的呼叫值。
有沒有辦法可以使用相同的函式從兩種型別的模型中提取這些資訊?這將是我的偏好,因為我希望將其設定為 lapply 函式以應用于模型串列。
models <- list(gm1, gm2)
calls <- lapply(models, function(x) x$call)
uj5u.com熱心網友回復:
你可以接到電話 summary(gm2)$call
我想這樣的事情會起作用:
library(lme4)
head(iris)
lmm<-lmer(Petal.Length~Petal.Width (1|Species),data=iris)
lm<-lm(Petal.Length~Petal.Width Species,data=iris)
lm$call
summary(lmm)$call
getcall<-function(x){if(class(x)=="lmerMod"|class(x)=="glmerMod"){return(summary(x)$call)}else{return(x$call)}}
getcall(lm)
## lm(formula = Petal.Length ~ Petal.Width Species, data = iris)
getcall(lmm)
## glmer(formula = Petal.Length ~ Petal.Width (1 | Species), data = iris,
family = Gamma)
現在添加您的lapply代碼:
models <- list(lm, lmm)
calls <- lapply(models, getcall)
calls
## [[1]]
## lm(formula = Petal.Length ~ Petal.Width Species, data = iris)
## [[2]]
## glmer(formula = Petal.Length ~ Petal.Width (1 | Species), data = iris,
family = Gamma)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/338417.html
上一篇:如何從另一個函式回傳值
