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