Hi: To condense the output a bit, here's a slight modification that returns, for each variable tested, the p-value, confidence limits and odds ratio estimate:
ff<-function(x,y){ m <- fisher.test(table(x,y)) c(m$p.value, m$conf.int, m$estimate) } res <- apply(data1[,LETTERS[1:26]], 2, ff, y=data1[,"pLoss"]) rownames(res)[1:3] <- c('p-value', 'lowerCL', 'upperCL') t(res) HTH, Dennis On Tue, May 11, 2010 at 1:04 AM, Mike White <mikewhite....@btconnect.com>wrote: > Set up a function for the fisher.test on a 2x2 table and then include this > in the apply function for columns as in the example below. The result is a > list with names A to Z > > # set up a dummy data set with 100 rows > Cat<-LETTERS[sample(1:6,100, replace=T)] > GL<-sample(1:6, 100, replace=T) > dat<-matrix(sample(c(0,1),100*27, replace=T), nrow=100) > colnames(dat)<-c(LETTERS[1:26],"pLoss") > data1<-data.frame(Cat, GL, dat) > > # define function fro fisher.test > ff<-function(x,y){ > fisher.test(table(x,y)) > } > > # apply function to columns A to Z > results<-apply(data1[,LETTERS[1:26]],2, ff, y=data1[,"pLoss"]) > # the results are in the form of a list with names A to Z > results$C > > > On 19:59, Venkatesh Patel wrote: > >> ---------- Forwarded message ---------- >> From: Dr. Venkatesh<drve...@liv.ac.uk> >> Date: Sun, May 9, 2010 at 4:55 AM >> Subject: R apply() help -urgent >> To: r-help@r-project.org >> >> >> I have a file with 4873 rows of 1s or 0s and has 26 alphabets (A-Z) as >> columns. the 27th column also has 1s and 0s but stands for a different >> variable (pLoss). columns 1 and 2 are not significant and hence lets >> ignore >> them for now. >> >> here is how the file looks >> >> Cat GL A B C D E F G H I J K L M N O P >> Q >> R S T U V W X Y Z pLoss >> H 5 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 >> 0 >> 0 0 0 0 0 0 0 0 0 1 >> E 5 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 >> 0 >> 0 0 0 0 0 0 0 0 0 1 >> P 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 >> 0 >> 0 0 0 0 0 0 0 0 0 1 >> P 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 >> 0 >> 0 0 0 0 0 0 0 0 0 1 >> F 6 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 >> 0 >> 0 0 0 0 0 0 0 0 0 1 >> E 4 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 >> 0 >> 0 0 0 0 0 0 0 0 0 1 >> H 5 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 >> 0 >> 0 0 0 0 0 0 0 0 0 1 >> J 4 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 >> 0 >> 0 0 0 0 0 0 0 0 0 1 >> J 4 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 >> 0 >> 0 0 0 0 0 0 0 0 0 1 >> E 5 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 >> 0 >> 0 0 0 0 0 0 0 0 0 1 >> S 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 >> 0 >> 0 1 0 0 0 0 0 0 0 1 >> .. >> .. >> .. >> .. >> .. >> .. >> >> Alphabets A-Z stand for different categories of protein families and pLoss >> stands for their presence or absence in an animal. >> >> I intend to do Fisher's test for 26 individual 2X2 tables constructed from >> each of these alphabets vs pLoss. >> >> For example, here is what I did for alphabet A and then B and then C.... >> so >> on. (I have attached R-input.csv for your perusal) >> >> >> >>> data1<- read.table("R_input.csv", header = T) >>> datatable<- table(data1$A, data1$pLoss) #create a new datatable2 or 3 >>> >>> >> with table(data1$B.. or (data1$C.. and so on >> >> >>> datatable >>> >>> >> 0 1 >> 0 31 4821 >> 1 0 21 >> >> now run the Fisher's test for these datatables one by one for the 26 >> alphabets :( >> >> fisher.test(datatable), ... fisher.test(datatable2)... >> >> in this case, the task is just for 26 columns.. so I can do it manually. >> >> But I would like to do an automated extraction and fisher's test for all >> the >> columns. >> >> I tried reading the tutorials and trying a few examples. Cant really come >> up >> with anything sensible. >> >> How can I use apply() in this regard? or is there any other way, a loop >> may >> be? to solve this issue. >> >> Please help. >> >> Thanks a million in advance, >> >> Dr Venkatesh Patel >> School of Biological Sciences >> University of Liverpool >> United Kingdom >> >> >> >> > ______________________________________________ > 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.