how to create a quoted expression from strings

I tend to use as.quoted from the plyr package

 outputString <- sprintf('list(%s)', paste(input, collapse = ', ')) 


 library(plyr)
  output <- as.quoted(outputString)[[1]]

  mydt[, eval(output)]
   string1 string2
1:       A       a
2:       B       b
3:       C       c

However if it is simply column selection, you can pass the string and use .. (which, like in the Unix terminal, means to "look up one level")

mydt[ , ..input]
   string1 string2
1:       A       a
2:       B       b
3:       C       c

Here is what I'd do:

## Create an example of a data.table "dt" whose columns you want to index 
## using a character vector "xx"
library(data.table)
dt <- data.table(mtcars)
xx <- c("wt", "mpg")

## Construct a call object identical to that produced by quote(list("wt", "mpg"))
jj <- as.call(lapply(c("list", xx), as.symbol))

## Try it out
dt[1:5,eval(jj)]
#       wt  mpg
# 1: 2.620 21.0
# 2: 2.875 21.0
# 3: 2.320 22.8
# 4: 3.215 21.4
# 5: 3.440 18.7

When "computing on the language" like this, it's often helpful to have a look at the structure of the object you're trying to construct. Based on the following (and once you know about as.call() and as.symbol()), creating the desired language object becomes a piece of cake:

x <- quote(list(wt, mpg))

str(x)
#  language list(wt, mpg)

class(x)
# [1] "call"

str(as.list(x))
# List of 3
#  $ : symbol list
#  $ : symbol wt
#  $ : symbol mpg