[R] Choosing columns by number

stephen sefick ssefick at gmail.com
Tue Aug 25 17:32:01 CEST 2015


?grep

I think this will do what you want.

#something like
a <- data.frame(a=rnorm(10), b=rnorm(10), c=rnorm(10), d=rnorm(10))

toMatch <- c("a", "d")

grep(paste(toMatch,collapse="|"), colnames(a))

#to subset
a[,grep(paste(toMatch,collapse="|"), colnames(a))]


On Tue, Aug 25, 2015 at 10:17 AM, Sam Albers <tonightsthenight at gmail.com>
wrote:

> Hi all,
>
> This is a process question. How do folks efficiently identify column
> numbers in a dataframe without manually counting them. For example, if I
> want to choose columns from the iris dataframe I know of two options. I can
> do this:
>
> > str(iris)'data.frame':        150 obs. of  5 variables:
>  $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
>  $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
>  $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
>  $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
>  $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1
> 1 1 1 1 1 1 ...
>
> or this:
>
> > names(iris)[1] "Sepal.Length" "Sepal.Width"  "Petal.Length"
> "Petal.Width"  "Species"
>
> Neither option explicitly identifies the column number so that I can
> do something like this:
>
> iris[,c(2,4)]
>
> I feel like there must be a better way to do this so I wanted to ask
> the collective wisdom here what people do to accomplish this.
> Obviously this is a trivial example, but the issue really becomes
> problematic when you have a large dataframe.
>
> Thanks in advance!
>
> Sam
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.
>



-- 
Stephen Sefick
**************************************************
Auburn University
Biological Sciences
331 Funchess Hall
Auburn, Alabama
36849
**************************************************
sas0025 at auburn.edu
http://www.auburn.edu/~sas0025
**************************************************

Let's not spend our time and resources thinking about things that are so
little or so large that all they really do for us is puff us up and make us
feel like gods.  We are mammals, and have not exhausted the annoying little
problems of being mammals.

                                -K. Mullis

"A big computer, a complex algorithm and a long time does not equal
science."

                              -Robert Gentleman

	[[alternative HTML version deleted]]



More information about the R-help mailing list