Criar dinamicamente chamada para pesquisa de várias colunas

Como posso procurar dinamicamente vários campos eadicionar por referência usando variável de vetor de caracteres como argumento. No caso abaixo, quero procurar duas colunas e me livrar dei. prefixo neles. É claro que eles podem substituir as colunas já existentes com o mesmo nome.

library(data.table)
set.seed(1)
ID <- data.table(id = 1:3, meta = rep(1,3), key = "id")
JN <- data.table(idd = sample(ID$id, 3, FALSE), value = sample(letters, 3, FALSE), meta = rep(1,3), key = "idd")
select <- c("value","meta") # my fields to lookup
j.lkp <- call(":=", select, lapply(paste0("i.",select), as.symbol))
j.lkp
# `:=`(c("value", "meta"), list(i.value, i.meta))
ID[JN, eval(j.lkp)]
# Error in eval(expr, envir, enclos) : could not find function "i.value"
ID[JN, `:=`(c("value", "meta"), list(i.value, i.meta))]
#    id meta value
# 1:  1    1     x
# 2:  2    1     v
# 3:  3    1     f

Estou ciente depergunta semelhante mas este pede um argumento vetorizado durante a junção e a criação direta de chamadas paraj.
editar: eu sei que posso fazer isso usando.SDcols mas então não posso fazer issopor referência

questionAnswers(3)

yourAnswerToTheQuestion