Ошибка связана с фактором только с одним уровнем. Пожалуйста, посмотрите этот пример, немного измененный по сравнению с sparse.model.matrix
, который реализован в пакете Matrix
:
library(Matrix)
dd <- data.frame(a = gl(3,4), b = gl(4,1,12), c = gl(1,1, 12))
sparse.model.matrix(~ ., dd)
Это приводит к вашей ошибке, потому что c является фактором только с одним уровнем:
Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) :
контрасты могут применяться только к факторам с 2 или более уровнями
Я не знаю о ваших исходных данных, но что-то подобное может решить эту проблему, отбросив любой фактор с одним уровень.
sparse.model.matrix(~.,dd[,sapply(dd, nlevels) > 1])