2013-06-24 3 views
4

Dans R, la fonction de régression glm produit un objet de la classe glm qui est une liste.Affichage d'un objet produit par `glm` sous la forme d'une liste dans R

Comme c'est une liste, je devrais pouvoir voir un objet de la classe glm comme liste sans aucun formatage en cours. Cependant, as.list ne semble pas faire cela.

Par exemple, si fit est un modèle équipé de la fonction 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 

D'autre part, d'autres fonctions qui s'appliquent à la liste correctement, tels que names qui produiront les 30 noms des liste associée.

Aussi, je peux voir les éléments individuels de la même manière que je le ferais pour toute autre liste:

> fit$coefficients 
(Intercept)   V3   V2   V1 
    1.349282 1.593067 1.576868 1.127067 

Y at-il fonction de pré-existante qui me permettra de voir fit sous sa forme de liste sans mise en forme ? Comme je l'ai dit plus haut, je pourrais construire ma propre fonction en utilisant les noms de la liste, mais cela semble inutile pour une tâche aussi simple.

+6

Essayez 'unclass (fit)'. –

+0

@ JoshO'Brien ce commentaire devrait être une réponse :) – dickoa

+0

Je suis d'accord. Je savais qu'il y avait quelque chose de basique, mais je n'ai pas beaucoup d'expérience avec les cours en R. –

Répondre

7

Bien que fitest une liste, il a de la classe glm, donc auto-imprimer envoie la méthode d'impression print.glm(). Comme indiqué ci-dessous, as.list() préserve la classe de l'objet, donc ne vous aide pas du tout.

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 

un des problèmes suivants imprimera fit comme une liste.

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 
Questions connexes