从 R 中的 lme4 摘要中提取一列
Extract a column from lme4 summary in R
我想知道从下面的 vc
对象中仅提取(不像 HERE 那样打印)Std.Dev.
列作为向量的最有效方法是什么?
library(lme4)
library(nlme)
data(Orthodont, package = "nlme")
fm1 <- lmer(distance ~ age + (age|Subject), data = Orthodont)
vc <- VarCorr(fm1) ## extract only the `Std.Dev.` column as a vector
'vc' 的 str
结构表明它是一个具有单个元素 'Subject' 的 list
而 'stddev' 是一个属性
str(vc)
#List of 1
# $ Subject: num [1:2, 1:2] 6.3334 -0.3929 -0.3929 0.0569
# ..- attr(*, "dimnames")=List of 2
# .. ..$ : chr [1:2] "(Intercept)" "age"
# .. ..$ : chr [1:2] "(Intercept)" "age"
# ..- attr(*, "stddev")= Named num [1:2] 2.517 0.239 ####
所以,直接提取属性
attr(vc$Subject, "stddev")
残差标准差是一个外部属性
attr(vc, "sc")
#[1] 1.297364
如果我们将它们与 c
结合起来,我们会得到一个 vector
c(attr(vc$Subject, "stddev"), attr(vc, "sc"))
# (Intercept) age
# 2.5166317 0.2385853 1.2973640
用 as.numeric/as.vector
包裹以删除名称,因为它是 named
矢量
或使用attributes
c(attributes(vc)$sc, attributes(vc$Subject)$stddev)
如果你想要列中的三个元素,你可以使用:
as.numeric(c(attr(vc[[1]], "stddev"), attr(vc, "sc")))
我想知道从下面的 vc
对象中仅提取(不像 HERE 那样打印)Std.Dev.
列作为向量的最有效方法是什么?
library(lme4)
library(nlme)
data(Orthodont, package = "nlme")
fm1 <- lmer(distance ~ age + (age|Subject), data = Orthodont)
vc <- VarCorr(fm1) ## extract only the `Std.Dev.` column as a vector
'vc' 的 str
结构表明它是一个具有单个元素 'Subject' 的 list
而 'stddev' 是一个属性
str(vc)
#List of 1
# $ Subject: num [1:2, 1:2] 6.3334 -0.3929 -0.3929 0.0569
# ..- attr(*, "dimnames")=List of 2
# .. ..$ : chr [1:2] "(Intercept)" "age"
# .. ..$ : chr [1:2] "(Intercept)" "age"
# ..- attr(*, "stddev")= Named num [1:2] 2.517 0.239 ####
所以,直接提取属性
attr(vc$Subject, "stddev")
残差标准差是一个外部属性
attr(vc, "sc")
#[1] 1.297364
如果我们将它们与 c
结合起来,我们会得到一个 vector
c(attr(vc$Subject, "stddev"), attr(vc, "sc"))
# (Intercept) age
# 2.5166317 0.2385853 1.2973640
用 as.numeric/as.vector
包裹以删除名称,因为它是 named
矢量
或使用attributes
c(attributes(vc)$sc, attributes(vc$Subject)$stddev)
如果你想要列中的三个元素,你可以使用:
as.numeric(c(attr(vc[[1]], "stddev"), attr(vc, "sc")))