[R] Choosing columns by number

David Winsemius dwinsemius at comcast.net
Tue Aug 25 20:07:06 CEST 2015


On Aug 25, 2015, at 9:31 AM, David L Carlson wrote:

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

You can also display character vectors with numbering at the console with as.matrix:

> as.matrix(names(iris))
     [,1]          
[1,] "Sepal.Length"
[2,] "Sepal.Width" 
[3,] "Petal.Length"
[4,] "Petal.Width" 
[5,] "Species"  

-- 
(the other) David.

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

David Winsemius
Alameda, CA, USA



More information about the R-help mailing list