применение lm к нескольким наборам данных
Ниже приведены 4 набора данных (я просто создал их случайным образом для обеспечения воспроизводимого кода). Я создал список из них, чтобы я мог применить "lm" к этим нескольким наборам данных сразу:
H<-data.frame(replicate(10,sample(0:20,10,rep=TRUE)))
C<-data.frame(replicate(5,sample(0:100,10,rep=FALSE)))
R<-data.frame(replicate(7,sample(0:30,10,rep=TRUE)))
E<-data.frame(replicate(4,sample(0:40,10,rep=FALSE)))
dsets<-list(H,C,R,E)
models<-lapply(dsets,function(x)lm(X1~.,data=x))
lapply(models,summary)
Переменные в каждом из наборов данных различны (как по количеству, так и по именам. Однако, если вы запустите код, все они будут x1,x2..и так далее). Первый столбец/переменная в каждом будет ответом, а остальные будут независимыми переменными.
Этот код работает, но не на мой фактический набор данных. Поскольку мои наборы данных имеют фактические имена переменных, я использовал позицию переменной, как показано ниже:
dsets<-list(H,C,R,E)
models<lapply(dsets,function(x)lm(x[,1]~.,data=x))
lapply(models,summary)
Используя вышесказанное, результаты перепутались. Она также включает в себя переменную ответа в качестве независимой переменной.
Может ли кто-нибудь помочь?
EDIT: я понял, что x [, 1] вызывает весь столбец, а не имя столбца
models<lapply(dsets,function(x)lm(colnames(x)[1]~.,data=x))
lapply(models,summary)
Но и это не работает. Я получаю следующую ошибку
Error in model.frame.default(formula = colnames(H[1]) ~ ., data = H, drop.unused.levels = TRUE) :
variable lengths differ (found for 'Var1')