给定数据如下:
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”。
是否有更好和/或更快的方法来创建这些新列?