# [R] Indexing ANOVA table

Peter Dalgaard p.dalgaard at biostat.ku.dk
Sat Nov 29 12:32:41 CET 2003

```Pascal.Niklaus at unibas.ch writes:

> 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?
>
> > 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
>
> So where is the difference between the two?
>
> Thanks for any hint

There's an extra list level:

> example(aov)
...
> str(summary(npk.aovE)[["Error: Within"]])
List of 1
\$ :Classes anova  and `data.frame':    7 obs. of  5 variables:
..\$ Df     : num [1:7] 1 1 1 1 1 1 12
..\$ Sum Sq : num [1:7] 189.3   8.4  95.2  21.3  33.1 ...
..\$ Mean Sq: num [1:7] 189.3   8.4  95.2  21.3  33.1 ...
..\$ F value: num [1:7] 12.259  0.544  6.166  1.378  2.146 ...
..\$ Pr(>F) : num [1:7] 0.00437 0.47490 0.02880 0.26317 0.16865 ...
- attr(*, "class")= chr [1:2] "summary.aov" "listof"
> summary(npk.aovE)[["Error: Within"]][[1]]["N:P","Pr(>F)"]
[1] 0.2631653

As to *why* there's this extra level, you have to ask the author...

--
O__  ---- Peter Dalgaard             Blegdamsvej 3
c/ /'_ --- Dept. of Biostatistics     2200 Cph. N
(*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)             FAX: (+45) 35327907

```