Отредактировано для отслеживания адресов из OP
Я считаю, что использование as.matrix
в этом случае неявно создает факторы. Это также не обязательно для этих пакетов. Вы можете сохранить его как фрейм данных, но вам нужно будет убедиться, что любые неиспользуемые уровни факторов отброшены с помощью droplevels
(или чего-то подобного). Существует множество причин, по которым в вашем наборе данных может быть неиспользованный фактор, но распространенным является пропущенное наблюдение.
Ниже приведен краткий пример, который воспроизводит вашу ошибку:
library('randomForest')
#making a toy data frame
x <- data.frame('one' = c(1,1,1,1,1,seq(50) ),
'two' = c(seq(54),NA),
'three' = seq(55),
'four' = seq(55) )
x$one <- as.factor(x$one)
x <- na.omit(x) #getting rid of an NA. Note this removes the whole row.
randomForest(one ~., data = as.matrix(x)) #your first error
randomForest(one ~., data = x) #your second error
x <- droplevels(x)
randomForest(one ~., data = x) #OK