On Jan 30, 2012, at 12:33 PM, David Winsemius wrote: > > On Jan 30, 2012, at 2:30 AM, David Studer wrote: > >> Hello, >> I have the following question: >> >> when creating a data.frame >> a1<-c(1,2,3) >> a2<-c(1,2,3) >> c<-data.frame(a1,a2) >> I can select columns using an index like: >> c[,1:2] >> Is this possible too when using column-names? (something like c(,"a1":"a2"), >> which doesn't work): > > Generally you need to use grep to convert column names to numbers for use > within "[" operations] > > df[ , grep("^a1$", names(df)):grep"^"a2$", names(df)) ] > > -- > Another David
Just to throw out another option here, the ?subset function has a 'select' argument, which supports a start:end syntax to extract sequential columns from a data frame. Thus: subset(DF, StartColumnName:EndColumnName) gets you that ability. The column names are NOT quoted, so in your case: subset(DF, select = a1:a2) You can even select sequential and non-sequential columns by using c() along with the start:end syntax: subset(DF, select = c(ColA, ColF:ColH, ColK, ColN:ColW, ColZ)) HTH, Marc Schwartz > >> >> Alternative question: Is there a function to get the index of a variable by >> name > > That's what grep will do. > >> or can I >> select certain columns using a loop? (a_1, a_2, ..., a_n) >> >> Thank you very much! >> David > > David Winsemius, MD > Heritage Laboratories > West Hartford, CT \ ______________________________________________ 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.