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

Martin Maechler maechler at stat.math.ethz.ch
Thu Sep 17 12:04:44 CEST 2009


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



    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
    >> 
    >> ______________________________________________
    >> R-help at 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.
    >> 

    SH> [[alternative HTML version deleted]]

    SH> ______________________________________________
    SH> R-help at r-project.org mailing list
    SH> https://stat.ethz.ch/mailman/listinfo/r-help
    SH> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
    SH> and provide commented, minimal, self-contained, reproducible code.




More information about the R-help mailing list