2015-02-10 26 views
5

Aşağıda 4 veri kümesi bulunmaktadır (bunları yeniden üretilebilir bir kod sağlamak için rastgele oluşturdum). Ben bu yüzden aynı anda bu çoklu veri setleri için "lm" geçerli olabilir bu bir liste oluşturduk.lm için birden fazla veri kümesine uygulama

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) 

veri setleri her değişkenleri farklıdır (sayısında yanı adları gibi Ancak, koşarsan kod hepsi x1, x2 vb. olacaklardır. Her birindeki ilk sütun/değişken cevap olacaktır ve dinlenme bağımsız değişkenler olacaktır.

Bu kod çalışıyor ancak gerçek veri kümemde değil. Benim veri kümeleri değişkenler için fiili adlara sahip olduğundan, bunun yerine aşağıdaki gibi değişken konumunu kullandı:

dsets<-list(H,C,R,E) 
    models<lapply(dsets,function(x)lm(x[,1]~.,data=x)) 
    lapply(models,summary) 

yukarıdaki kullanarak, sonuç ortada yok. Ayrıca bağımsız değişken olarak yanıt değişkenini içerir.

Yardımcı olabilir misiniz?

DÜZENLEME: x [1] tüm sütun değil sütun adını

models<lapply(dsets,function(x)lm(colnames(x)[1]~.,data=x)) 
    lapply(models,summary) 

çağırıyor ama bu da işe yaramıyor fark etti. Ben

Error in model.frame.default(formula = colnames(H[1]) ~ ., data = H, drop.unused.levels = TRUE) : 
    variable lengths differ (found for 'Var1') 

cevap

1
models <- lapply(dsets, 
      function(data){ 
       lm(reformulate(termlabels=".", response=names(data)[1]), data) 
      }) 

reformulate Eğer character dizeleri bir formül oluşturmak için olanak sağlar aşağıdaki hatayı alabilirsiniz.

+0

Awsome! Bu iyi çalıştı. Ama bana kodumun nesi yanlış olduğunu söyleyebilir misin? ve termlabels = "." yapar? – oivemaria

+0

Tamam, termlabels = "." Gibi görünüyor sadece veri kümesindeki – oivemaria

+0

@oivemaria Yup'daki tüm değişkenleri kullanmanız söyleniyor! – stanekam

İlgili konular