Проблема в том, что добавленную вами новую функцию необходимо преобразовать в коэффициент, используя as.factor
Давайте воспроизведем вашу ошибку
df <- data.frame(cat = c('A','B','C','B','A'),target=c(0,0,1,1,0))
df$cat <- as.character(df$cat)
train <- df[1:2,]
test <- df[3:5,]
dv_train <- dummyVars(target~.,train)
predict(dv_train,train)
# no column catC is created because in train there is no row where cat=="C"
# catA catB
#1 1 0
#2 0 1
predict(dv_train,test)
# catA catB catC
#3 0 0 1
#4 0 1 0
#5 1 0 0
Вы можете видеть, что вы получаете кадры данных с разнымиколичество столбцов, потому что у вас разное количество уровней в train и test
Чтобы решить эту проблему, вы должны преобразовать все свои символьные переменные в факторы, прежде чем разбивать ваш фрейм данных между test и train, таким образом, когда выполняется dummyVars,каждый уровень создаст один новый столбец
# Convert cat column to factor
df$cat <- as.factor(df$cat)
train <- df[1:2,]
test <- df[3:5,]
dv_train <- dummyVars(target~.,train)
predict(dv_train,train)
# cat.A cat.B cat.C
# 1 1 0 0
# 2 0 1 0
Теперь есть столбец для кошки C, хотя C все еще не появляется в поезде