Преобразование столбца факторов в несколько столбцов логических значений

Учитывая данные, которые выглядят как:

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

Я хотел бы разбить эти данные на 5 логических столбцов, которые указывают на наличие каждого числа.

Я могу сделать это вот так:

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

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

Но здесь используется надоедливый lapply, который, вероятно, медленнее, чем альтернатива data.table, и это решение кажется мне не очень «data.table -ish».

Есть ли лучший и/или более быстрый способ создания этих новых столбцов?

7
задан Justin 5 July 2012 в 18:41
поделиться