Hi, Instead of accessing the data by its name in data.frame, you may use index by "[[ ]]" as well. For your case, the looping may looks like
for (i in 1:26){ datatable <- table(data1[[i+2]], data1$pLoss) #create a new datatable2 or 3 fisher.test(datatable) } Bests, Ruihong On 05/09/2010 06:30 AM, 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. > -- Ph.D. Student / Chair of Econometrics Humboldt Universität zu Berlin http://amor.cms.hu-berlin.de/~huangrui/ [[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.