[R] Choosing columns by number

David L Carlson dcarlson at tamu.edu
Tue Aug 25 18:31:34 CEST 2015


You might also look at Str() in package DescTools. It is basically str() with column numbers added:

> library(DescTools)
Loading required package: manipulate
> data(iris)
> Str(iris)
'data.frame':   150 obs. of  5 variables:
 1 $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
 2 $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
 3 $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
 4 $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
 5 $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...

-------------------------------------
David L Carlson
Department of Anthropology
Texas A&M University
College Station, TX 77840-4352

-----Original Message-----
From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Sam Albers
Sent: Tuesday, August 25, 2015 10:45 AM
To: stephen sefick
Cc: r-help at r-project.org
Subject: Re: [R] Choosing columns by number

Thierry's answer of:

data.frame(
  seq_along(iris),
  colnames(iris)
)

is exactly what I was looking for. Apologies for vagueness and HTML.
It was unintended.

Sam

On Tue, Aug 25, 2015 at 8:32 AM, stephen sefick <ssefick at gmail.com> wrote:
> ?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
>

______________________________________________
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.



More information about the R-help mailing list