[R] Extracting part of anova.cca()

Jari Oksanen jari.oksanen at oulu.fi
Mon Jan 23 12:57:53 CET 2012


On 23/01/2012, at 13:31 PM, Nevil Amos wrote:

> I have an anova.cca() output.
> 
> If it is possible I would like to extract the table it contains as a data frame 
> ie
>>> myAnova
>> Permutation test for rda under reduced model
>> Terms added sequentially (first to last)
>> 
>> Model: rda(formula = mygenind at tab ~ mds3dCS_NULL + mds3dTRE_25_2_CS25 + mydata$LAT.x + mydata$LONG.x + mydata$Hab_Config + mds3dTRE_25_100_CS25 + mydata$TreeCov + mydata$Site_No + mds3dSFW_EO_100_CS25 + mds3dSFW_EO_5000_CS25 + mydata$Landscape + mds3dSFW_TH_10_CS25, scale = T, na.action = "na.omit")
>>                       Df     Var      F N.Perm Pr(>F)   
>> mds3dCS_NULL            3   6.527 2.6380     99   0.01 **
>> mds3dTRE_25_2_CS25      3   5.596 2.2616     99   0.01 **
>> mydata$LAT.x            1   1.892 2.2939     99   0.01 **
>> mydata$LONG.x           1   1.891 2.2929     99   0.01 **
>> mydata$Hab_Config       2   2.772 1.6807     99   0.01 **
>> mds3dTRE_25_100_CS25    3   3.952 1.5970     99   0.01 **
>> mydata$TreeCov          1   1.272 1.5418     99   0.01 **
>> mydata$Site_No          1   1.345 1.6306     99   0.01 **
>> mds3dSFW_EO_100_CS25    3   3.741 1.5120     99   0.01 **
>> mds3dSFW_EO_5000_CS25   3   3.410 1.3783     99   0.01 **
>> mydata$Landscape        8   9.300 1.4094     99   0.01 **
>> mds3dSFW_TH_10_CS25     3   3.658 1.4785     99   0.01 **
>> Residual              139 114.644                        
>> ---
>> Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
>>> 
> 
> 
> 
> 
> I would like to extract as a table:
> 
>>                       Df     Var      F N.Perm Pr(>F)   
>> mds3dCS_NULL            3   6.527 2.6380     99   0.01 **
>> mds3dTRE_25_2_CS25      3   5.596 2.2616     99   0.01 **
>> mydata$LAT.x            1   1.892 2.2939     99   0.01 **
>> mydata$LONG.x           1   1.891 2.2929     99   0.01 **
>> mydata$Hab_Config       2   2.772 1.6807     99   0.01 **
>> mds3dTRE_25_100_CS25    3   3.952 1.5970     99   0.01 **
>> mydata$TreeCov          1   1.272 1.5418     99   0.01 **
>> mydata$Site_No          1   1.345 1.6306     99   0.01 **
>> mds3dSFW_EO_100_CS25    3   3.741 1.5120     99   0.01 **
>> mds3dSFW_EO_5000_CS25   3   3.410 1.3783     99   0.01 **
>> mydata$Landscape        8   9.300 1.4094     99   0.01 **
>> mds3dSFW_TH_10_CS25     3   3.658 1.4785     99   0.01 **
>> Residual              139 114.644                        
> 
> 
> Is this possible? what is the syntax?
> 
> I have looked at str(myAnova) but cannot see how to get the table with variable names included 


Nevil,

The output *is* a data frame so that there is not much to extract. There are a two extra arguments added to the data frame:  heading and Random.seed. One way of getting rid off those is to use command as.data.frame():

as.data.frame(myAnova)

However,  you will not get significance stars with this: the stars are not a part of the result, but they are only displayed when you print the result and if getOption("show.signif.stars") is TRUE. Moreover, the last line ("Residuals") has some cells which are printed as empty, but they are not empty: they contain NA and they only look empty because print.anova sets option na.print = "" in printCoefmat() it uses internally.

Putting these together: if you only want to have the data frame, you have it or may strip extra arguments using as.data.frame(myAnova). If you want to get printed output like in your example above,  you can use

printCoefmat(as.data.frame(myAnova), na.print="", signif.legend=FALSE)

Cheers, Jari Oksanen
-- 
Jari Oksanen, Dept Biology, Univ Oulu, 90014 Finland
jari.oksanen at oulu.fi, Ph. +358 400 408593, http://cc.oulu.fi/~jarioksa



More information about the R-help mailing list