[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