[R] How to extract data.frame columns using regex?

Romain Francois romain.francois at dbmail.com
Thu Sep 17 12:39:06 CEST 2009


On 09/17/2009 12:04 PM, Martin Maechler wrote:
>
>>>>>> "SH" == Schalk Heunis<schalk.heunis at enerweb.co.za>
>>>>>>      on Thu, 17 Sep 2009 11:15:16 +0200 writes:
>
>      SH>  I think this is what you want:
>      >>  df<- data.frame(x1=1:11,x2=2:12,x3=3:13,y=4:14)
>      >>  grep('^x',names(df))
>      SH>  [1] 1 2 3
>
>      SH>  The returned indexes refer to the column positions, so you could do:
>      >>  names(df)[grep('^x',names(df))]
>      SH>  [1] "x1" "x2" "x3"
>
> yes, or slightly more elegant and efficient
>
>    >  grep('^x',names(df), value = TRUE)
>    [1] "x1" "x2" "x3"

or, if you have the operators package:

 > require( operators )
 > names(df) %~|% "^x"
[1] "x1" "x2" "x3"

... note that is has been declared confusing in this mailing list 
previously. http://article.gmane.org/gmane.comp.lang.r.general/154749



>      SH>  or
>      >>  df[,grep('^x',names(df))]
>      SH>  x1 x2 x3
>      SH>  1   1  2  3
>      SH>  2   2  3  4
>      SH>  3   3  4  5
>      SH>  4   4  5  6
>      SH>  5   5  6  7
>      SH>  6   6  7  8
>      SH>  7   7  8  9
>      SH>  8   8  9 10
>      SH>  9   9 10 11
>      SH>  10 10 11 12
>      SH>  11 11 12 13
>
>      SH>  HTH
>
>      SH>  Schalk Heunis
>
>
>      SH>  On Thu, Sep 17, 2009 at 5:03 AM, Peng Yu<pengyu.ut at gmail.com>  wrote:
>
>      >>  Hi,
>      >>
>      >>  data.frame(x1=1:11,x2=2:12,x3=3:13,y=4:14)
>      >>
>      >>  I want to extract all the columns that with the name 'x?'. Is there a
>      >>  general way to do this in R?
>      >>
>      >>  Regards,
>      >>  Peng



-- 
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30
http://romainfrancois.blog.free.fr
|- http://tr.im/yw8E : New R package : sos
|- http://tr.im/y8y0 : search the graph gallery from R
`- http://tr.im/y8wY : new R package : ant




More information about the R-help mailing list