[BioC] sort the difference and save to individual files problem
Adaikalavan Ramasamy
ramasamy at cancer.org.uk
Fri Jul 30 13:31:55 CEST 2004
What you are looking for is pairwise difference between all pairs of
columns. Also you only have choose(n, 2) = n * (n-1) / 2 pairs which in
your case means 45 pairs not 100.
The below works but is inefficient for large number of columns. I would
be interested if anyone can suggest how to rewrite this using the
apply() family. [Is this question more appropriate for R-help ?]
pairwise.difference <- function(m){
npairs <- choose( ncol(m), 2 )
results <- matrix( NA, nc=npairs, nr=nrow(m) )
cnames <- rep(NA, npairs)
if(is.null(colnames(m))) colnames(m) <- paste("col", 1:ncol(m),
sep="")
k <- 1
for(i in 1:ncol(m)){
for(j in 1:ncol(m)){
if(j <= i) next;
results[ ,k] <- m[ ,i] - m[ ,j]
cnames[k] <- paste(colnames(m)[ c(i, j) ], collapse=".vs.")
k <- k + 1
}
}
colnames(results) <- cnames
return(results)
}
# Example
mat <- matrix( sample(1:12), nc=4 )
colnames(mat) <- LETTERS[1:4]
mat
A B C D
[1,] 10 6 3 5
[2,] 7 11 2 12
[3,] 1 8 9 4
pairwise.difference(mat)
A.vs.B A.vs.C A.vs.D B.vs.C B.vs.D C.vs.D
[1,] 4 7 5 3 1 -2
[2,] -4 5 -5 9 -1 -10
[3,] -7 -8 -3 -1 4 5
It is more efficient to store 1 file with 45 columns than 45 files with
one column.
On Fri, 2004-07-30 at 11:14, Dr_Gyorffy_Balazs wrote:
> I have a table with gene expression data:
>
> Smpl 1 Smpl 2 Smpl 3
> Gene 1 2 3 2
> Gene 2 4 6 8
> Gene 3 6 9 10
> ?
>
> [1.] I would like to construct a table/list of differences
> of every sample minus every other sample. For example:
>
> Smpl 2 - Smpl 3:
>
> Gene 1 1
> Gene 2 -2
> Gene 3 -1
> ...
>
> [2.] I would like to sort all these tables/lists
> decreasingly
>
> Sample 2 ? Sample 3
>
> Gene 1 1
> Gene 3 -1
> Gene 2 -2
> ...
>
> [3.] I have all together 10 samples, so the expected
> outputs are 10x10=100 tables with one column. I would like
> to save this result in 100 files (for example in a tab
> separated output).
>
> Is this possible?
>
> I can do every individual sample vs other sample by simple
> R commands (-, sort, etc), but that?s just too much work.
> Maybe somenone can help me to make this in an elegant way.
>
> (I want to compare already calculated mean values of the
> samples without additional significance tests. Therefore I
> don?t want to use sam, t-test, or other statistical
> method.)
>
> Thank you for the help
> Balazs Györffy
>
> _______________________________________________
> Bioconductor mailing list
> Bioconductor at stat.math.ethz.ch
> https://www.stat.math.ethz.ch/mailman/listinfo/bioconductor
>
More information about the Bioconductor
mailing list