[R] Indexing ANOVA table

Pascal A. Niklaus Pascal.Niklaus at unibas.ch
Mon Dec 1 10:28:22 CET 2003


Prof Brian Ripley wrote:

>On Sat, 29 Nov 2003 Pascal.Niklaus at unibas.ch wrote:
>
>  
>
>>Hi all,
>>
>>I'd like to extract a value from an ANOVA table, but experience the following
>>problem:
>>
>>### This works:
>>
>>    
>>
>>>s.pseudo <- summary(aov(m ~ block + mix*graz,data=split1))
>>>s.pseudo
>>>      
>>>
>>            Df  Sum Sq Mean Sq F value  Pr(>F)
>>block        2 1114.66  557.33  4.4296 0.04192 *
>>mix          1    6.14    6.14  0.0488 0.82956
>>graz         2    1.45    0.72  0.0057 0.99427
>>mix:graz     2    3.82    1.91  0.0152 0.98495
>>Residuals   10 1258.19  125.82
>>---
>>Signif. codes:  0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1
>>    
>>
>>>s.pseudo[[1]]["mix ","Pr(>F)"]
>>>      
>>>
>>[1] 0.8295556
>>
>>### But this doesn't -- why?
>>    
>>
>
>Why should it?
>
>  
>
>>>s.split <-  summary(aov(m ~ block + mix*graz + Error(Plot),data=split1))
>>>s.split
>>>      
>>>
>>Error: Plot
>>          Df  Sum Sq Mean Sq F value Pr(>F)
>>block      2 1114.66  557.33  0.8994 0.5265
>>mix        1    6.14    6.14  0.0099 0.9298
>>Residuals  2 1239.37  619.68
>>
>>Error: Within
>>          Df  Sum Sq Mean Sq F value Pr(>F)
>>graz       2  1.4464  0.7232  0.3073 0.7437
>>mix:graz   2  3.8206  1.9103  0.8117 0.4776
>>Residuals  8 18.8278  2.3535
>>    
>>
>>>s.split[["Error: Plot"]]  ## extracting first list element works
>>>      
>>>
>>          Df  Sum Sq Mean Sq F value Pr(>F)
>>block      2 1114.66  557.33  0.8994 0.5265
>>mix        1    6.14    6.14  0.0099 0.9298
>>Residuals  2 1239.37  619.68
>>    
>>
>>>s.split[["Error: Plot"]]["mix ","Pr(>F)"]  ### <== FAILS
>>>      
>>>
>>Error in s.split[["Error: Plot"]]["mix ", "Pr(>F)"] :
>>        incorrect number of dimensions
>>    
>>
>
>You should have written
>
>s.split[["Error: Plot"]][[1]]["mix ","Pr(>F)"]
>
>  
>
>>So where is the difference between the two?
>>    
>>
>
>One is an "aov" object, the other an "aovlist" object.  Take a closer look 
>at print.summary.aov, for example.
>
>More generally, learn how to look at R objects instead of assuming you
>know what you are doing: unclass(s.split[["Error: Plot"]]) would have been
>informative.
>  
>
Thanks for the help - it works now.

I had of course tried str(s.split) and str(s.split[["Error: Plot"]]) and also [ ] and [[ ]], but wrongly thought that the remaining "List of 1" was because I extracted a slice of the list instead of a specific list element only... Need to look better next time...

Pascal




More information about the R-help mailing list