Hi Rui, Thanks once again for all the help. I need to ask for one more help from you. I have two matrices, with probesets as rows and samples as columns. The samples in the two matrices are matched (from the same animal but two different tissues). I want to create a correlation matrix of sample by sample using the probeset expression values. Could you please suggest a way to do that?
Thanks, Som. Date: Sat, 12 May 2012 15:20:52 -0700 From: ml-node+s789695n4629656...@n4.nabble.com To: genome1...@hotmail.com Subject: RE: Calculating all possible ratios Hello, Nothing wrong with me, maybe your R session has some conflicting objects. Running the function in the previous post on the first 4 rows and first 6 columns of your dataset the result was (copy&paste to your session) result <- structure(c(8.74714923153198, 1.83094400392095, 9.92065138471113, 1.77145415014708, 1.01515180575001, 0.167175438316099, 0.222321656865252, 0.155576771874649, 3.09417748158541, 0.469647988505747, 1.29398633565582, 0.524043736521509, 3.75969597954255, 0.422694576901317, 9.75471698113208, 0.290397651827521, 4.9035575319622, 1.00105273231888, 1.01093964697178, 0.26895145631068, 0.114322960947685, 0.546166347992352, 0.100799832714726, 0.564507977763338, 0.11605516024473, 0.0913055986191245, 0.0224099858208782, 0.0878243288779063, 0.353735531392494, 0.256505926724138, 0.130433606169248, 0.295826869963301, 0.42981957664441, 0.230861553382365, 0.983273839877614, 0.163931791180376, 0.56058921623124, 0.546741314958369, 0.10190254729944, 0.151825242718447, 0.9850743448771, 5.98173996175908, 4.49798734905118, 6.4276947512815, 8.61659229879359, 10.9522309159971, 44.6229644227777, 11.3863665430362, 3.04799485560622, 2.8093121408046, 5.82033416762497, 3.36839317468124, 3.70358005398494, 2.52844904226946, 43.8765935747068, 1.86658746243623, 4.83036872336483, 5.98803713273998, 4.54719374273333, 1.72873786407767, 0.323187666496628, 2.12925430210325, 0.772805687699305, 1.90823767237023, 2.82697074863659, 3.89854539725884, 7.66673581578674, 3.38035554418724, 0.328084543240185, 0.35595902124055, 0.1718114409242, 0.296877457036954, 1.21508737036511, 0.900024246342843, 7.53850076491586, 0.554147739185128, 1.58476931628683, 2.13149583692219, 0.781259909100518, 0.513223300970874, 0.265978952936953, 2.36577437858509, 0.102514506769826, 3.44355401535389, 2.32655759378615, 4.33160041310018, 1.01701068353905, 6.10009805175427, 0.270009014365446, 0.395499368696959, 0.0227911949977918, 0.535737017484743, 0.822986086753186, 1.11108117816092, 0.132652370966651, 1.8045729131197, 1.30424309801742, 2.36826490573261, 0.103635979283374, 0.926148867313916, 0.203933571388086, 0.998948374760994, 0.989178733859585, 3.71814309436142, 1.78383738225087, 1.82901853699522, 9.81329737579089, 6.58652001534723, 0.207023533247665, 0.166999632405824, 0.219915855047535, 0.578456699988768, 0.631006664328306, 0.469154094827586, 1.27998376513563, 1.9484696000908, 0.76672822844154, 0.422250060615857, 9.64915859255482, 1.07974002376127), .Dim = c(4L, 30L), .Dimnames = list(c("S1", "S2", "S3", "S4"), c("P1:P2", "P1:P3", "P1:P4", "P1:P5", "P1:P6", "P2:P1", "P2:P3", "P2:P4", "P2:P5", "P2:P6", "P3:P1", "P3:P2", "P3:P4", "P3:P5", "P3:P6", "P4:P1", "P4:P2", "P4:P3", "P4:P5", "P4:P6", "P5:P1", "P5:P2", "P5:P3", "P5:P4", "P5:P6", "P6:P1", "P6:P2", "P6:P3", "P6:P4", "P6:P5"))) Rui Barradas genome1976 wrote Hi Rui, Thanks once again. I really appreciate it. I tried using the code with the following dataset: Sample P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 S1 5292.9 605.1 5213.9 1710.6 1407.8 1079.4 1379.6 9321.4 6951 1205.8 S2 104.6 57.129 625.69 222.72 247.46 104.49 330.29 1863.7 389.67 216.29 S3 191.29 19.282 860.42 147.83 19.61 189.22 203.27 1799 369.9 175.73 S4 41.553 23.457 267.09 79.293 143.09 154.5 52.567 613.54 408.86 61.715 S5 671.33 19.076 1040.9 319.04 50.766 57.445 50.005 1615.5 1149.1 163.99 S6 125.9 22.296 563.83 236.36 112.38 81.581 48.406 2073.6 388.4 62.575 S7 78.485 18.152 248.18 156.19 322.4 162.01 38.379 2786.8 630.63 71.163 S8 1355.6 51.534 422.51 134.89 202.34 48.368 69.45 231.11 1875.9 153.18 S9 2167.6 45.244 430.73 262.19 365.71 116.49 65.663 151.04 3071.5 210.55 S10 575.7 24.699 170.09 128.64 42.58 31.034 55.256 294.67 448.05 226.19 S11 234.22 22.594 944.54 118.91 16.994 102.67 199.32 2300 192.38 108.3 S12 193.38 25.374 829.88 74.872 108.1 116.49 175.49 1248 340.33 65.022 S13 60.43 15.907 947.23 49.12 62.992 189.11 27.348 134.46 209.66 67.638 S14 94.563 23.304 303.25 36.745 220.11 128.72 33.242 135.6 263.31 107.4 S15 44.379 17.794 768 26.144 49.329 103 26.782 290.04 151.63 66.928 S16 42.333 14.671 224.49 19.642 100.96 82.624 42.736 94.781 182.99 68.087 S17 528.59 49.81 685.29 24.981 106.7 72.219 114.44 610.74 1779.9 245.57 When I run the code, this is what I get : probeset1:probeset2 probeset1:probeset3 probeset1:probeset4 [1,] 0.2000000 0.1111111 0.07692308 [2,] 0.3333333 0.2000000 0.14285714 [3,] 0.4285714 0.2727273 0.20000000 [4,] 0.5000000 0.3333333 0.25000000 probeset1:probeset5 probeset1:probeset6 probeset2:probeset1 [1,] 0.05882353 0.04761905 5.000000 [2,] 0.11111111 0.09090909 3.000000 [3,] 0.15789474 0.13043478 2.333333 [4,] 0.20000000 0.16666667 2.000000 probeset2:probeset3 probeset2:probeset4 probeset2:probeset5 [1,] 0.5555556 0.3846154 0.2941176 [2,] 0.6000000 0.4285714 0.3333333 [3,] 0.6363636 0.4666667 0.3684211 [4,] 0.6666667 0.5000000 0.4000000 probeset2:probeset6 probeset3:probeset1 probeset3:probeset2 [1,] 0.2380952 9.000000 1.800000 [2,] 0.2727273 5.000000 1.666667 [3,] 0.3043478 3.666667 1.571429 [4,] 0.3333333 3.000000 1.500000 probeset3:probeset4 probeset3:probeset5 probeset3:probeset6 [1,] 0.6923077 0.5294118 0.4285714 [2,] 0.7142857 0.5555556 0.4545455 [3,] 0.7333333 0.5789474 0.4782609 [4,] 0.7500000 0.6000000 0.5000000 probeset4:probeset1 probeset4:probeset2 probeset4:probeset3 [1,] 13 2.600000 1.444444 [2,] 7 2.333333 1.400000 [3,] 5 2.142857 1.363636 [4,] 4 2.000000 1.333333 probeset4:probeset5 probeset4:probeset6 probeset5:probeset1 [1,] 0.7647059 0.6190476 17.000000 [2,] 0.7777778 0.6363636 9.000000 [3,] 0.7894737 0.6521739 6.333333 [4,] 0.8000000 0.6666667 5.000000 probeset5:probeset2 probeset5:probeset3 probeset5:probeset4 [1,] 3.400000 1.888889 1.307692 [2,] 3.000000 1.800000 1.285714 [3,] 2.714286 1.727273 1.266667 [4,] 2.500000 1.666667 1.250000 probeset5:probeset6 probeset6:probeset1 probeset6:probeset2 [1,] 0.8095238 21.000000 4.200000 [2,] 0.8181818 11.000000 3.666667 [3,] 0.8260870 7.666667 3.285714 [4,] 0.8333333 6.000000 3.000000 probeset6:probeset3 probeset6:probeset4 probeset6:probeset5 [1,] 2.333333 1.615385 1.235294 [2,] 2.200000 1.571429 1.222222 [3,] 2.090909 1.533333 1.210526 [4,] 2.000000 1.500000 1.200000 As you can see P1:P2 is not 0.2000000 as indicated by the results of the code. Am I doing something wrong? Thanks once again. Som. Date: Sat, 12 May 2012 14:04:11 -0700 From: [hidden email] To: [hidden email] Subject: RE: Calculating all possible ratios Hello, I'm glad it helped. Now to make the result readable. (I had thought of it.) pairwise.ratios <- function(x, prefix="probeset", char=":"){ n <- ncol(x) cn <- colnames(x) if(length(cn) == 0){ cn <- gsub(" ", "0", formatC(seq.int(n), width=nchar(n))) cn <- paste(prefix, cn, sep="") } cmb <- combn(n, 2) r1 <- apply(cmb, 2, function(j) x[, j[1]]/x[, j[2]]) r2 <- apply(cmb, 2, function(j) x[, j[2]]/x[, j[1]]) colnames(r1) <- apply(cmb, 2, function(j) paste(cn[j], collapse=char)) colnames(r2) <- apply(cmb, 2, function(j) paste(cn[rev(j)], collapse=char)) cbind(r1, r2)[, order(c(colnames(r1), colnames(r2)))] } m1 <- matrix(1:24, ncol=6) pairwise.ratios(m1) Rui Barradas genome1976 wrote Thanks so much Rui. I really appreciate all the help. I implemented the code and it ran fine. I was wondering how I could include the probeset ids as probeset1:probeset2 in the final output so that I know which ratios are for which probeset pairs. Thanks so much. Som. Date: Sat, 12 May 2012 09:29:54 -0700 From: [hidden email] To: [hidden email] Subject: Re: Calculating all possible ratios Hello, If by all possible gene ratios you mean all pairwise column ratios, try the following. # Make up some data x <- matrix(1:24, ncol=6) cmb <- combn(ncol(x), 2) r1 <- apply(cmb, 2, function(j) x[, j[1]]/x[, j[2]]) r2 <- apply(cmb, 2, function(j) x[, j[2]]/x[, j[1]]) cbind(r1, r2) Note that the dataset must be a numeric only matrix or data.frame. Hope this helps, Rui Barradas Em 12-05-2012 11:00, [hidden email] escreveu: > Date: Fri, 11 May 2012 12:39:23 -0700 (PDT) > From: genome1976<[hidden email]> > To:[hidden email] > Subject: [R] Calculating all possible ratios > Message-ID:<[hidden email]> > Content-Type: text/plain > > I have a data matrix with genes as columns and samples as rows. I want to > create all possible gene ratios.Is there an elegant and fast way to do it in > R and write it to a dataframe? > > Thanks for any help. > Som. > > -- > View this message in > context:http://r.789695.n4.nabble.com/Calculating-all-possible-ratios-tp4627405.html > Sent from the R help mailing list archive at Nabble.com. > [[alternative HTML version deleted]] > ______________________________________________ [hidden email] 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. If you reply to this email, your message will be added to the discussion below: http://r.789695.n4.nabble.com/Calculating-all-possible-ratios-tp4627405p4629105.html To unsubscribe from Calculating all possible ratios, click here. NAML If you reply to this email, your message will be added to the discussion below: http://r.789695.n4.nabble.com/Calculating-all-possible-ratios-tp4627405p4629513.html To unsubscribe from Calculating all possible ratios, click here. NAML If you reply to this email, your message will be added to the discussion below: http://r.789695.n4.nabble.com/Calculating-all-possible-ratios-tp4627405p4629656.html To unsubscribe from Calculating all possible ratios, click here. NAML -- View this message in context: http://r.789695.n4.nabble.com/Calculating-all-possible-ratios-tp4627405p4629922.html Sent from the R help mailing list archive at Nabble.com. [[alternative HTML version deleted]] ______________________________________________ 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.