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))
[1] 1 2 3

The returned indexes refer to the column positions, so you could do:
>names(df)[grep('^x',names(df))]
[1] "x1" "x2" "x3"
or
>df[,grep('^x',names(df))]
   x1 x2 x3
1   1  2  3
2   2  3  4
3   3  4  5
4   4  5  6
5   5  6  7
6   6  7  8
7   7  8  9
8   8  9 10
9   9 10 11
10 10 11 12
11 11 12 13

HTH

Schalk Heunis


On Thu, Sep 17, 2009 at 5:03 AM, Peng Yu <pengyu.ut@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@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.
>

	[[alternative HTML version deleted]]


