When sharing data, use dput() to output the data in a way that R-Help readers can easily use.
Give this code a try and see if it helps. Jean # read in the example data mat1 <- structure(list("GENE SYMBOL" = c("ADCK2", "ADCK3", "ADCK4", "ADCK5", "ADRBK1", "ADRBK2", "AKT1", "AKT2", "AKT3", "ALK"), Sample.A1.A0SK.01 = c(0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L), Sample.A1.A0SO.01 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), Sample.A1.A0SP.01 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), Sample.A2.A04P.01 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), Sample.A2.A04Q.01 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), Sample.A2.A04U.01 = c(0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L), Sample.A2.A0CL.01 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), Sample.A2.A0CM.01 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), Sample.A2.A0D0.01 = c(0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L), Sample.A2.A0D2.01 = c(1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), Sample.A2.A0ST.01 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), Sample.A2.A0SX.01 = c(0L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L), Sample.A2.A0T0.01 = c(0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("GENE SYMBOL", "Sample-A1-A0SK-01", "Sample-A1-A0SO-01", "Sample-A1-A0SP-01", "Sample-A2-A04P-01", "Sample-A2-A04Q-01", "Sample-A2-A04U-01", "Sample-A2-A0CL-01", "Sample-A2-A0CM-01", "Sample-A2-A0D0-01", "Sample-A2-A0D2-01", "Sample-A2-A0ST-01", "Sample-A2-A0SX-01", "Sample-A2-A0T0-01"), class = "data.frame", row.names = c(NA, -10L)) mat2 <- mat1 fish <- function(x, y) { n00 = sum((1-x)*(1-y)) n01 = sum((1-x)*y) n10 = sum(x*(1-y)) n11 = sum(x*y) a = matrix(c(n00, n01, n10, n11), nrow=2) pval = fisher.test(a)$p.value return(c(n00, n01, n10, n11, pval)) } results <- data.frame(matrix(NA, nrow=dim(mat1)[1]*dim(mat2)[1], ncol=7, dimnames=list(NULL, c("gene1", "gene2", "n00", "n01", "n10", "n11", "pval")))) count <- 0 for(i in 1:dim(mat1)[1]) { for(j in 1:dim(mat2)[1]) { count <- count + 1 results[count, "gene1"] <- mat1$"GENE SYMBOL"[i] results[count, "gene2"] <- mat2$"GENE SYMBOL"[j] results[count, 3:7] <- fish(mat1[i, -1], mat2[j, -1]) }} On Mon, Jun 24, 2013 at 10:35 AM, Angel Russo <angerusso1...@gmail.com>wrote: > Sample data is as follows (for simplicity assume mat1 and mat2 are the > same matrices). Also attached as an excel file. > > I want to get the pairwise interaction fischer test results. Not just the > pvalues but also want to wrote the n00, n01, n10 and n11 in the file as: > > > ADCK2_mat1 ADCK3_mat2 n00 n01 n10 n11 pvalue > > > > ADCK2_mat1 ADCK4_mat2 n00 n01 n10 n11 pvalue > > GENE SYMBOL Sample-A1-A0SK-01 Sample-A1-A0SO-01 Sample-A1-A0SP-01 > Sample-A2-A04P-01 Sample-A2-A04Q-01 Sample-A2-A04U-01 Sample-A2-A0CL-01 > Sample-A2-A0CM-01 Sample-A2-A0D0-01 Sample-A2-A0D2-01 Sample-A2-A0ST-01 > Sample-A2-A0SX-01 Sample-A2-A0T0-01 ADCK2 0 0 0 0 0 0 0 0 0 1 0 0 0 > ADCK3 0 0 0 0 0 1 0 0 1 0 0 1 0 ADCK4 0 0 0 0 0 0 0 0 0 0 0 1 0 ADCK5 1 > 0 0 0 0 0 0 0 0 0 0 0 1 ADRBK1 0 0 0 0 0 0 0 0 0 0 0 0 0 ADRBK2 0 0 0 0 > 0 1 0 0 0 0 0 0 0 AKT1 0 0 0 0 0 0 0 0 0 0 0 0 0 AKT2 0 0 0 0 0 0 0 0 0 > 0 0 1 0 AKT3 0 0 0 0 0 0 0 0 1 0 0 1 0 ALK 0 0 0 0 0 0 0 0 0 0 0 0 0 > > > On Mon, Jun 24, 2013 at 11:03 AM, Adams, Jean <jvad...@usgs.gov> wrote: > >> Could you provide an example of mat1 and mat2 as well as an example of >> the output you would like from them. >> >> Your code is very difficult to follow as written. It will be easier for >> readers of the list to interpret if you use carriage returns rather than >> semi colons, for example ... >> >> fish <- function(x, y) { >> n00 = sum((1-x)*(1-y)) >> n01 = sum((1-x)*y) >> n10 = sum(x*(1-y)) >> n11 = sum(x*y) >> a = matrix(c(n00, n01, n10, n11), nrow=2) >> pval = fisher.test(a)$p.value >> return(pval) >> } >> >> Jean >> >> >> On Mon, Jun 24, 2013 at 6:09 AM, Angel Russo <angerusso1...@gmail.com>wrote: >> >>> ** >>> >>> I am using the following way to get p-values from fiser exact test. >>> However, I do need to print for each pair the values "n00, n01, n10, >>> n11". >>> How can I print that as a table and not a matrix as below along with the >>> p-value? Any help will be greatly appreciated >>> >>> fish <- function(y, x) {n00 = sum((1-x)*(1-y)); n01 = sum((1-x)*y); >>> n10 = sum(x*(1-y)); n11 = sum(x*y); a = matrix(c(n00, n01, n10, n11), >>> nrow = 2); pval = fisher.test(a)$p.value; return(pval);} >>> >>> chiArray <- function(x) { apply(mat1, 1, fish, x); } >>> sapply(1:nrow(mat2), function(j){chiArray(mat2[j, ]);}); >>> chisq.cna.mut.test <- sapply(1:nrow(mat2), function(j){chiArray(mat2[j, >>> ]);}); >>> >>> I want output to be: >>> >>> name1_mat1 name1_mat2 n00 n01 n10 n11 pvalue >>> >>> >>> >>> name1_mat1 name2_mat2 n00 n01 n10 n11 pvalue >>> >>> [[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. >>> >> >> > [[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.