lme4::lmer 摘要对象包含带字符串的双对象
lme4::lmer summary object contains double object with string
以下机型为例
library('lme4')
foo <- lmer(cty ~ hwy + (1|model), data=mpg, REML=F)
现在我们可以检索模型的对数似然
sum.foo <- summary(foo)
LL <- sum.foo[["logLik"]]
LL
'log Lik.' -343 (df=4)
typeof(LL)
[1] "double"
问题:如何将所有这些信息存储在一个双对象中?那里似乎至少有两个字符串,即 "log Lik." 和“(df=4)”。有没有办法从此对象中检索 df 的值?
LL
实际上只是一个数字(带有属性)。您在打印 LL
时看到的行是由 print.logLik
函数创建的,如下所示:
getAnywhere(print.logLik)
A single object matching ‘print.logLik’ was found
It was found in the following places
registered S3 method for print from namespace stats
namespace:stats
with value
function (x, digits = getOption("digits"), ...)
{
cat("'log Lik.' ", paste(format(c(x), digits = digits), collapse = ", "),
" (df=", format(attr(x, "df")), ")\n", sep = "")
invisible(x)
}
这就是当您 运行 LL
但 LL
实际上只是一个数字(长度为 1 的数字向量)时调用的内容。 cat
函数用于打印您在控制台上看到的 'log Lik.' -343 (df=4)
。
为了获得 df 值你可以这样做(从上面的函数也可以看出):
format(attr(LL[['logLik']], "df"))
查看示例(来自 lmer
的文档):
fm1 <- lmer(Reaction ~ Days + (Days | Subject), sleepstudy)
a <- summary(fm1)# (with its own print method)
> a[['logLik']]
'log Lik.' -871.8141 (df=6)
> format(attr(a[['logLik']], "df"))
[1] "6"
并且根据@BenBolker 在评论中提到的 format
仅将其转换为字符。
> attr(a[['logLik']], "df")
[1] 6
可能更好。
以下机型为例
library('lme4')
foo <- lmer(cty ~ hwy + (1|model), data=mpg, REML=F)
现在我们可以检索模型的对数似然
sum.foo <- summary(foo)
LL <- sum.foo[["logLik"]]
LL
'log Lik.' -343 (df=4)
typeof(LL)
[1] "double"
问题:如何将所有这些信息存储在一个双对象中?那里似乎至少有两个字符串,即 "log Lik." 和“(df=4)”。有没有办法从此对象中检索 df 的值?
LL
实际上只是一个数字(带有属性)。您在打印 LL
时看到的行是由 print.logLik
函数创建的,如下所示:
getAnywhere(print.logLik)
A single object matching ‘print.logLik’ was found
It was found in the following places
registered S3 method for print from namespace stats
namespace:stats
with value
function (x, digits = getOption("digits"), ...)
{
cat("'log Lik.' ", paste(format(c(x), digits = digits), collapse = ", "),
" (df=", format(attr(x, "df")), ")\n", sep = "")
invisible(x)
}
这就是当您 运行 LL
但 LL
实际上只是一个数字(长度为 1 的数字向量)时调用的内容。 cat
函数用于打印您在控制台上看到的 'log Lik.' -343 (df=4)
。
为了获得 df 值你可以这样做(从上面的函数也可以看出):
format(attr(LL[['logLik']], "df"))
查看示例(来自 lmer
的文档):
fm1 <- lmer(Reaction ~ Days + (Days | Subject), sleepstudy)
a <- summary(fm1)# (with its own print method)
> a[['logLik']]
'log Lik.' -871.8141 (df=6)
> format(attr(a[['logLik']], "df"))
[1] "6"
并且根据@BenBolker 在评论中提到的 format
仅将其转换为字符。
> attr(a[['logLik']], "df")
[1] 6
可能更好。