К сожалению, R имеет неприятное поведение, когда поднаставляет только один столбец, такой как df[,1]
, чтобы изменить результат на vector
, и, поскольку у вас есть только один предиктор, вы столкнулись с этой функцией.Вы можете сохранить результаты как data.frame
либо
trainSet[,predictors, drop = FALSE]
, либо
trainSet[predictors]
Кстати.Есть две дополнительные проблемы с кодом:
- Первый аргумент должен быть предиктором, а не ответом
- Для логистической регрессии с
caret
вам нужен ответ, равный factor
Полный код должен быть:
library(caret)
df <- data.frame(response = sample(0:1, 200, replace=TRUE),
predictor = rnorm(200,10,45))
df$response <- as.factor(df$response)
outcomeName <-"response"
predictors <- names(df)[!(names(df) %in% outcomeName)]
index <- createDataPartition(df$response, p=0.75, list=FALSE)
trainSet <- df[ index,]
testSet <- df[-index,]
model_glm <- train(trainSet[predictors], trainSet[[outcomeName]], method='glm', family="binomial", data = trainSet)
* изменен trainSet[,outcomeName]
на trainSet[[outcomeName]]
для более явного преобразования в vector