Actually, after requests from many of us who do want the all the results from topTable to use in R (and not just written out to a file using write.fit), Gordon kindly made some changes to the newest version of limma out with R 2.8.0 (currently limma_2.16.3). Here's a snippet from the help file:
Toptable output for all probes in original (unsorted) order can be obtained by topTable(fit,sort="none",n=Inf). However write.fit or write may be preferable if the intention is to write the results to a file. A related method is as.data.frame(fit) which coerces an MArrayLM object to a data.frame.
However, this will only give the adjusted p-values for one contrast at a time, or the over F-stat and adjusted p-values if more than one coefficient is given to topTable. You code below may be better if you want results for all the coefficients together in one object.
Jenny Drnevich, Ph.D.
Functional Genomics Bioinformatics Specialist
W.M. Keck Center for Comparative and Functional Genomics
Roy J. Carver Biotechnology Center
University of Illinois, Urbana-Champaign
1201 W. Gregory Dr.
Urbana, IL 61801
Actually, topTable() has always been able to output results for all genes if necessary. As Jenny, points out, you could simply use:
tab <- topTable(fit, n=Inf, coef=2)
to get results for all genes for coefficient 2.
If you wanted to create a data.frame with results for all coefficients, you could use:
tab <- as.data.frame(fit)
and your fit2table function is essentially the same as that. There's no need to write you own code to do this stuff. As Jenny's quote shows, there are hints about this in the topTable help page.