data.table: Richtige Methode zum Erstellen einer bedingten Variablen, wenn Spaltennamen nicht bekannt sind?

Meine Frage bezieht sich auf die Erstellung einer Variablen, die von anderen Spalten in einer Datentabelle abhängt, wenn keiner der Variablennamen im Voraus bekannt ist.

Unten ist ein Spielzeugbeispiel, in dem ich 5 Zeilen habe und die neue Variable 1 sein sollte, wenn die Bedingung gleich A und ansonsten 4 ist.

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"

Der folgende Code funktioniert, fühlt sich aber so an, als würde ich das Paket missbrauchen!

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

Aktualisieren: Vielen Dank, ich habe die folgenden Antworten schnell überprüft. Sobald auf einer Datentabelle mit 5 Millionen Zeilen und nur den relevanten Spalten und erneut nach dem Hinzufügen von 10 nicht relevanten Spalten die folgenden Ergebnisse angezeigt werden:

+-------------------------+---------------------+------------------+
|         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              |
+-------------------------+---------------------+------------------+

Sieht aus wie .SDCols ist am besten für die Geschwindigkeit und die Verwendung von Ersatz für einfach zu lesenden Code.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage