data.table: Maneira correta de criar uma variável condicional quando os nomes das colunas não são conhecidos?

Minha pergunta refere-se à criação de uma variável que depende de outras colunas dentro de um data.table quando nenhum dos nomes de variáveis ​​é conhecido antecipadamente.

Abaixo está um exemplo de brinquedo onde eu tenho 5 linhas e a nova variável deve ser 1 quando a condição é igual a A e 4 em sentido contrário.

library(data.table)
DT <- data.table(Con = c("A","A","B","A","B"),
                 Eval_A = rep(1,5),
                 Eval_B = rep(4,5))
Col1 <- "Con"
Col2 <- "Eval_A"
Col3 <- "Eval_B"
Col4 <- "Ans"

O código abaixo funciona, mas parece que estou usando mal o pacote!

DT[,Col4:=ifelse(DT[[Col1]]=="A",
                 DT[[Col2]],
                 DT[[Col3]]),with=FALSE]

Atualizar: Obrigado, eu fiz algumas temporizações rápidas das respostas abaixo. Uma vez em um data.table com 5 milhões de linhas e apenas as colunas relevantes e novamente depois de adicionar 10 colunas não relevantes, abaixo estão os resultados:

+-------------------------+---------------------+------------------+
|         Method          | Only relevant cols. | With extra cols. |
+-------------------------+---------------------+------------------+
| List method             | 1.8                 | 1.91             |
| Grothendieck - get/if   | 26.79               | 30.04            |
| Grothendieck - get/join | 0.48                | 1.56             |
| Grothendieck - .SDCols  | 0.38                | 0.79             |
| agstudy - Substitute    | 2.03                | 1.9              |
+-------------------------+---------------------+------------------+

Parece que o .SDCols é melhor para velocidade e usa substituto para código fácil de ler.

questionAnswers(2)

yourAnswerToTheQuestion