Konwertuj kolumnę czynników na wiele kolumn logicznych

Dane, które wyglądają tak:

library(data.table)
DT <- data.table(x=rep(1:5, 2))

Chciałbym podzielić te dane na 5 kolumn logicznych, które wskazują obecność każdej liczby.

Mogę to zrobić w ten sposób:

new.names <- sort(unique(DT$x))

DT[, paste0('col', new.names) := lapply(new.names, function(i) DT$x==i), with=FALSE]

Ale to używa nieznośnegolapply który jest prawdopodobnie wolniejszy niż alternatywa data.table i rozwiązania te wydają mi się nie bardzo „data.table-ish”.

Czy istnieje lepszy i / lub szybszy sposób tworzenia nowych kolumn?

questionAnswers(3)

yourAnswerToTheQuestion