Remember that data frames are stored as lists, and lists can be subset with a vector of strings (if the list is named, but the column names are the names of the list elements). So you can just do something like:
> mydf <- data.frame( a=1:5, b=5:1, c=11:15, d=21:25 )
>
> mycols <- c('a','d')
>
> mydf[ mycols ]
a d
1 1 21
2 2 22
3 3 23
4 4 24
5 5 25
> str(.Last.value)
'data.frame': 5 obs. of 2 variables:
$ a: int 1 2 3 4 5
$ d: int 21 22 23 24 25