Я использую glm(), чтобы создать несколько разных моделей, основанных на значениях в векторе, который я делаю (h1_lines). Я хочу, чтобы sapply возвращал модель для каждого значения в векторе. Вместо этого мой код в настоящее время возвращает список списков, в которых одна часть списка является моделью. Кажется, он возвращает все, что я делаю внутри функции sapply.sapply() Возвращающийся Удивительный результат - R
train = data.frame(scores=train[,y_col], total=train[,4], history=train[,5], line=train[,6])
h1_lines<- c(65, 70, 75)
models <- sapply(h1_lines, function(x){
temp_set<-train
temp_set$scores<-ifelse(temp_set$scores>x,1,
ifelse(temp_set$scores<x,0,rbinom(dim(temp_set)[1],1,.5)))
mod<-glm(scores ~ total + history + line, data=temp_set, family=binomial)
})
Я хотел бы код, чтобы работать так, после этих строк я могу сделать:
predict(models[1,], test_case)
predict(models[2,], test_case)
predict(models[3,], test_case)
Но сейчас я не могу сделать это вызвать sapply возвращается больше, чем просто модель .. Если я печатаю (тусклый (модели)), он говорит, что модели имеют 30 строк и 3 столбца?
EDIT TO ADD QUESTION;
Используя это предложение, код работает отлично, я могу сделать прогноз (модели [[1]], test_case), и он отлично работает. Как я могу вернуть/сохранить модели, чтобы я мог получить к ним доступ с помощью ключа, который я использовал для их создания? Например, с помощью h1_scores это может быть что-то вроде следующего:
predict(models[[65]], test_case))
predict(models[[key==65]], test_case)
Можете ли вы предоставить образцы данных? 'train' ссылается на себя. – Thomas
Кроме того, ваша функция в 'sapply' (которая должна быть' lapply', за ответ @ Señor O), вероятно, должна «возвращать» что-то. – Thomas
Технически 'mod' будет возвращен, так как это последняя строка брекетов, но я согласен, что лучше явно указать, что возвращается для удобочитаемости. –