Я использую sparse.model.matrix
в Matrix
для преобразования фактора в фиктивные переменные,
library(data.table)
d <- data.table(x=as.factor(c(1,1,2,2,3,3)))
m <- sparse.model.matrix(~x-1, data=d)
> m
6 x 3 sparse Matrix of class "dgCMatrix"
x1 x2 x3
1 1 . .
2 1 . .
3 . 1 .
4 . 1 .
5 . . 1
6 . . 1
, который я бы затем хотел cbind
с исходными данными. Поскольку матрица модели является разреженной, это не так легко работает, как с model.matrix
.
> d2 <- cbind(d,m)
> d2
Error in FUN(X[[i]], ...) :
Invalid column: it has dimensions. Can't format it. If it's the result of data.table(table()), use as.data.table(table()) instead.
Я нашел здесь решение для rbind
, которое называется rBind.fill
из Matrix.utils
. Интересно, есть ли подобное (или даже лучше: в базе r или в data.table) решение для cbind
.