4

在 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列表形式查看而不进行格式化?

正如我上面所说,我可以使用列表的名称构建自己的函数,但这对于如此简单的任务似乎没有必要。

4

1 回答 1

7

虽然fit 一个列表,但它有 class glm,所以自动打印它会调度print.glm()print 方法。如下所示,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
于 2013-06-24T20:28:41.740 回答