在R中,回归函数glm
生成类glm
的对象,这是一个列表。
由于它是一个列表,我应该能够查看类glm
的对象作为列表而不进行任何格式化。但是,as.list
似乎没有这样做。
例如,如果fit
是由函数glm
拟合的模型:
> as.list(fit)
Call: glm(formula = V4 ~ V3 + V2 + V1, family = Gamma, data = data)
Coefficients:
(Intercept) V3 V2 V1
1.349 1.593 1.577 1.127
Degrees of Freedom: 9999 Total (i.e. Null); 9996 Residual
Null Deviance: 2137
Residual Deviance: 2048 AIC: -30180
另一方面,适用于列表的其他函数正常工作,例如names
将生成相关列表的30个名称。
此外,我可以按照与其他任何列表相同的方式查看单个元素:
> fit$coefficients
(Intercept) V3 V2 V1
1.349282 1.593067 1.576868 1.127067
是否有任何预先存在的功能可以让我在列表中查看fit
而不进行格式化?
正如我上面所说的,我可以使用列表的名称构建自己的函数,但对于这么简单的任务来说,这似乎是不必要的。
答案 0 :(得分:7)
虽然fit
是列表,但它具有类glm
,因此自动打印它会调度print.glm()
打印方法。如下所示,as.list()
保留了对象的类,因此根本没有帮助。
fit <- glm(speed~dist, data=cars) ## A silly example
class(fit)
# [1] "glm" "lm"
class(as.list(fit))
# [1] "glm" "lm"
exists("print.glm")
# [1] TRUE
以下任何一项都会将fit
打印为列表。
unclass(fit) ## Returns and immediately auto-prints object of class "list"
## using print.default()
print.default(fit) ## Bypasses method dispatch, directly calling desired print
## method