在R中,回归函数glm产生一个类的对象,glm它是一个列表.
由于它是一个列表,我应该能够将类的对象glm视为列表而不进行任何格式化.但是,as.list似乎没有这样做.
例如,if 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
Run Code Online (Sandbox Code Playgroud)
另一方面,适用于列表的其他函数正确工作,例如names将生成相关列表的30个名称.
此外,我可以以与我对任何其他列表相同的方式查看单个元素:
> fit$coefficients
(Intercept) V3 V2 V1
1.349282 1.593067 1.576868 1.127067
Run Code Online (Sandbox Code Playgroud)
是否有任何预先存在的功能,允许我fit在列表中查看而不进行格式化?
正如我上面所说,我可以使用列表的名称构建自己的函数,但这对于这样一个简单的任务来说似乎是不必要的.
虽然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
Run Code Online (Sandbox Code Playgroud)
以下任一项都将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
Run Code Online (Sandbox Code Playgroud)