Your problem is a fairly common one and it has to do with how factors are stored internally in R. They look like "geneA","geneB", etc to you, but to R (for many things) they are kept as integers 1,2,3.
It should suffice to set x <- as.character(tp[1,]) which forces x to be the string "geneA" and you can then put that into gexp_1[,x] More generally, you can probably do something like gexp_1[,as.character(tp)] to just get the columns of interest directly. Hope this helps, Michael Weylandt On Wed, Sep 21, 2011 at 4:00 PM, Ahmed, Rizwan <rizwan.ah...@csc.mrc.ac.uk>wrote: > Hi, > > I have a dataframe "gexp_1" with 115 rows of samples and 27000 columns of > gene expression measurements with each column corresponding to one gene. I > now have a smaller vector of genes "tp" for which I need to pull out the > data form the data frame. > > # first gene from the list with 16 genes > > x <- tp[1,] > x > [1] geneA > 16 Levels: geneA, geneB... > > #unsuccessful > gexp_1$x > NULL > > #or > gexp_1$x[1] > NULL > > #but this works > gexp_1$geneA > > I am sure that this is a fundamental error on my part since I am new to R, > I would appreciate any advice. I am trying to construct a for loop to > analyze data for sets of genes at a time but stuck at this step. > > Regards > Rizwan > ______________________________________________ > 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.