Dưới đây là 4 bộ dữ liệu (Tôi vừa tạo chúng một cách ngẫu nhiên vì mục đích cung cấp mã có thể tái tạo). Tôi tạo ra một danh sách các vì vậy tôi có thể áp dụng "lm" với những nhiều bộ dữ liệu cùng một lúc.áp dụng lm cho nhiều bộ dữ liệu
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)
Các biến trong mỗi bộ dữ liệu khác nhau (trong số cũng như tên Tuy nhiên, nếu bạn chạy mã tất cả chúng sẽ là x1, x2..vv ..). Cột/biến đầu tiên trong mỗi cột sẽ là đáp ứng và phần còn lại sẽ là các biến độc lập.
Mã này hoạt động nhưng không hoạt động trên tập dữ liệu thực tế của tôi. Vì bộ dữ liệu của tôi có tên thực tế cho các biến, tôi đã sử dụng vị trí của biến thay vì như sau:
dsets<-list(H,C,R,E)
models<lapply(dsets,function(x)lm(x[,1]~.,data=x))
lapply(models,summary)
Sử dụng ở trên, kết quả sẽ bị làm sai lệch. Nó cũng bao gồm biến đáp ứng như biến độc lập.
Có ai hỗ trợ không?
EDIT: Tôi nhận ra rằng x [1] đang kêu gọi toàn bộ cột và không phải là tên cột
models<lapply(dsets,function(x)lm(colnames(x)[1]~.,data=x))
lapply(models,summary)
nhưng điều này không làm việc, hoặc. Tôi nhận được lỗi sau
Error in model.frame.default(formula = colnames(H[1]) ~ ., data = H, drop.unused.levels = TRUE) :
variable lengths differ (found for 'Var1')
Awsome! điều này làm việc tốt. Nhưng bạn có thể cho tôi biết điều gì sai với mã của tôi không? và termlabels = "." làm? – oivemaria
Ok, trông giống như termlabels = "." chỉ đang nói sử dụng tất cả các biến trong tập dữ liệu – oivemaria
@oivemaria Yup bạn đã nhận được nó! – stanekam