r случайная ошибка леса - типы предикторов в новых данных не совпадают

Я пытаюсь использовать квантильную функцию леса регрессии в R (quantregForest), который построен на пакете Random Forest. Я получаю ошибку несоответствия типов, которую я не могу понять, почему.

Я тренирую модель, используя

qrf <- quantregForest(x = xtrain, y = ytrain)

который работает без проблем, но когда я пытаюсь проверить с новыми данными, как

quant.newdata <- predict(qrf, newdata= xtest)

это дает следующую ошибку:

Error in predict.quantregForest(qrf, newdata = xtest) : 
Type of predictors in new data do not match types of the training data.

Мои данные обучения и тестирования поступают из отдельных файлов (следовательно, из отдельных фреймов данных), но имеют одинаковый формат. Я проверил классы предикторов с

sapply(xtrain, class)
sapply(xtest, class)

Вот вывод:

> sapply(xtrain, class)
pred1     pred2     pred3     pred4     pred5     pred6     pred7     pred8 
"factor" "integer" "integer" "integer"  "factor"  "factor" "integer"  "factor" 
pred9    pred10    pred11    pred12 
"factor"  "factor"  "factor"  "factor" 


> sapply(xtest, class)
pred1     pred2     pred3     pred4     pred5     pred6     pred7     pred8 
"factor" "integer" "integer" "integer"  "factor"  "factor" "integer"  "factor" 
pred9    pred10    pred11    pred12 
"factor"  "factor"  "factor"  "factor" 

Они точно такие же. Я также проверил значения «NA». Ни xtrain, ни xtest не содержат значения NA. Я что-то здесь упускаю?

Обновление I: запуск прогноза на тренировочных данных по-прежнему выдает ту же ошибку

> quant.newdata <- predict(qrf, newdata = xtrain)
Error in predict.quantregForest(qrf, newdata = xtrain) : 
names of predictor variables do not match

Обновление II: я объединил свои тренировочные и тестовые наборы так, чтобы строки от 1 до 101 были данными об обучении, а остальное - тестированием. Я изменил пример, представленный в (quantregForest) как:

data <-  read.table("toy.txt", header = T)
n <- nrow(data)
indextrain <- 1:101
xtrain <- data[indextrain, 3:14]
xtest <- data[-indextrain, 3:14]
ytrain <- data[indextrain, 15]
ytest <- data[-indextrain, 15]

qrf <- quantregForest(x=xtrain, y=ytrain)
quant.newdata <- predict(qrf, newdata= xtest)

И это работает! Буду признателен, если кто-нибудь сможет объяснить, почему это работает так, а не иначе?

Ответы на вопрос(6)

Ваш ответ на вопрос