In the sense - it does not work. it works when there are 50 samples in the file, but it does not work when there is one.
The usual headings are: sample1.at sample1.dp sample1.fg sample2.at sample2.dp sample2.fg.... and so on to a max of sample50.at sample50.dp sample50.fg using this greps out all the .at columns perfectly: df[,grep(".at",colnames(df))] When I come across a file when there is one sample: sample1.at sample1.dp sample1.fg Using this: df[,grep(".at",colnames(df))] returns nothing. Oh - AT/at was just an example... thats not my problem... On Tue, Oct 14, 2014 at 10:57 AM, Jeff Newmiller <jdnew...@dcn.davis.ca.us> wrote: > Your question is missing a reproducible example, and you don't say how it > does not work, so we cannot tell what is going on. > > Two things do come to mind, though. > > A) Data frame subsets with only one column by default return a vector, which > is a different type of object than a single-column data frame. You would need > to read ?"[.data.frame" about the "drop" argument if you wanted to > consistently get a data frame from this expression. > > B) The period is a wildcard in regular expressions. If you expect to limit > your search to literal ".at" at the end of the name then you should use the > search pattern "\\.at$" instead (the first slash allows the second one to be > stored by R in the string, and the second one is the only one seen by grep, > which it reads as making the period not act like a wildcard). You really > should read about regular expressions before using them. There are many > tutorials on the web about this topic. > > --------------------------------------------------------------------------- > Jeff Newmiller The ..... ..... Go Live... > DCN:<jdnew...@dcn.davis.ca.us> Basics: ##.#. ##.#. Live Go... > Live: OO#.. Dead: OO#.. Playing > Research Engineer (Solar/Batteries O.O#. #.O#. with > /Software/Embedded Controllers) .OO#. .OO#. rocks...1k > --------------------------------------------------------------------------- > Sent from my phone. Please excuse my brevity. > > On October 14, 2014 7:23:55 AM PDT, Kate Ignatius <kate.ignat...@gmail.com> > wrote: >>I'm having an issue with grep: >> >>I have numerous columns that end with .at... when I use grep like so: >> >>df[,grep(".at",colnames(df))] >> >>it works fine. When I have one column that ends with .at, it does not >>work. Why is that? As this is loop with varying number of columns >>ending in .at I would like some code that would work with 1 to n >>number of columns. >> >>Is there something more optimal than grep? >> >>Thanks! >> >>______________________________________________ >>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. > ______________________________________________ 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.