You can automate this step >key[key == "AT"] <- "TA"
## create a function to reverse a string -- see strsplit help page for this strReverse function reverse <- function(x) sapply(lapply(strsplit(x, NULL), rev), paste, collapse="") key <- rownames(a) # combine rownames with reverse (rownames) n<-cbind(key, rev=reverse(key)) key rev [1,] "AA" "AA" [2,] "AT" "TA" [3,] "TA" "AT" [4,] "TT" "TT" # Now just sort the values in the rows (apply returns column vectors so I also use t() ) and then run do.call on first column n<-t(apply(n,1, sort)) do.call(rbind, by(a, n[,1], colSums)) V1 V2 V3 V4 AA 1 5 9 13 AT 5 13 21 29 TT 4 8 12 16 I often need to combine reverse complement DNA strings, so you could do that too # DNA complement comp <- function(x) chartr("ACGT", "TGCA", x) n<-cbind(key, rev=reverse(comp(key))) n<-t(apply(n,1, sort)) do.call(rbind, by(a, n[,1], colSums)) V1 V2 V3 V4 AA 5 13 21 29 AT 2 6 10 14 TA 3 7 11 15 Chris Stubben jholtman wrote: > > Try this: > >> key <- rownames(a) >> key[key == "AT"] <- "TA" >> do.call(rbind, by(a, key, colSums)) > V2 V3 V4 V5 > AA 1 5 9 13 > TA 5 13 21 29 > TT 4 8 12 16 > > > On Mon, May 11, 2009 at 4:53 PM, Crosby, Jacy R > <jacy.r.cro...@uth.tmc.edu>wrote: > >> I'm working with genotype data in a frequency table: >> >> > a=matrix(1:16, nrow=4) >> > rownames(a)=c("AA","AT","TA","TT") >> > a >> [,1] [,2] [,3] [,4] >> AA 1 5 9 13 >> AT 2 6 10 14 >> TA 3 7 11 15 >> TT 4 8 12 16 >> >> 'AT' and 'TA' are essentially the same, and I'd like to combine (add) the >> rows to reflect this. The final matrix should be: >> >> [,1] [,2] [,3] [,4] >> AA 1 5 9 13 >> AT 5 13 21 29 >> TT 4 8 12 16 >> >> Is there a fast way to do this? >> >> Thanks in advance! >> >> Jacy Crosby >> jacy.r.cro...@uth.tmc.edu >> > -- View this message in context: http://www.nabble.com/Looking-for-a-quick-way-to-combine-rows-in-a-matrix-tp23491348p23525634.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.