Sometimes I do something like this when I have the data in a tab-delimited file:
df <- read.table(pipe("cut -f1,5,28 myFile.txt"))
That lets cut do the data selection, which it can do without using much memory at all.
See Only read limited number of columns for pure R version, using "NULL" in the colClasses argument to read.table.