This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Export tukeyHSD result table

Hey guys

I have transcriptome data from five different groups. I'm comparing transcriptome from five different brain regions. My data is with genes in columns and samples in rows.

I used the following code to perform ANOVA and Tukey's post-hoc test:

> genes <- colnames(mydata)[2:ncol(mydata)]
> head(genes)
> aov.out <- lapply(genes, function(x) { lm(substitute(i ~ Groups, list(i = as.name(x))), data = mydata)})
> TukeyHSD.out <- lapply(aov.out, function(x) TukeyHSD(aov(x)))

My aov.out file is a result list for all my genes:

> TukeyHSD.out[[1]]

Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = x)
$Groups
         diff       lwr      upr     p adj
HIP-CER 0.06974 -1.716994 1.856474 0.9994666
LPS-CER 0.18248 -1.502069 1.867029 0.9890216
PFC-CER 0.30944 -1.375109 1.993989 0.9505767
LPS-HIP 0.11274 -1.673994 1.899474 0.9977672
PFC-HIP 0.23970 -1.547034 2.026434 0.9796204
PFC-LPS 0.12696 -1.557589 1.811509 0.9962189

I'd like to get a table in a data.frame that looks something like:

Comparison          Gene        diff          adj.p-value
Group1-Group2       ATF6        1.5548      0.01548

Can anybody help me?

Thanks in advance!

r

1 answer

The object aov.out is a list and length(aov.out) is equal to length(gene). So you can iterate over the list and retrieve what you want:

# defining empty vectors. They will populate through the loop
Comparison = c()
Gene = c()
diff  = c()
adj.p_value = c()
# loop to iterate over the list elements
for(i in 1:length(TukeyHSD.out)){
  Comparison = c(Comparison, rownames(TukeyHSD.out[[i]]$group)) 
  Gene = c(Gene, rep(genes[i], dim(TukeyHSD.out[[i]]$group)[1]))
  diff = c(diff, TukeyHSD.out[[i]]$group[,1])
  adj.p_value = c(adj.p_value, TukeyHSD.out[[i]]$group[,4])
}
# putting all together
res = data.frame(Comparison, Gene, diff, adj.p_value)

Log in to answer this question.