[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