2012-10-03 90 views
0

說我有一堆數據框與一堆列。我需要在列1和2,1和3上調用lm函數,依此類推。所以基本上我需要遍歷所有列,並在構建模型時存儲擬合結果。我遇到的問題是:數據框線性擬合

lm(df[1]~df[2], data = df) #doesnt work. In this case df is the data frame object 
          #and df[1] is the first column. 

什麼是一個循環做到這一點的好辦法,因爲在獲取df迭代的方式列?

+2

'lm(df [,1]〜df [,2])'記住你的逗號 –

回答

2

這裏是df迴歸對抗我認爲這是你想要的所有其他列的因變量的第一列的例子..

x<-1:5 
y<-5:1 
df<-data.frame(x,y,x,y,x,y) 
df1<-df[,1] 
df2<-df[,2:6] 
resultslist<-lapply(df2,function(x) (lm(df1~x))) 

如果你是更具體的有關係數/輸出你想那麼這個答案可能會更好

1

既然你似乎想通過循環多次與響應是在data.frame第一支柱安裝單期線性模型列,下面的工作

dat <- data.frame(matrix(rnorm(110),ncol=11)) 
.names <- names(dat) 
.formulae <- lapply(.names[-1], reformulate, response = .names[1]) 
results_list <- lapply(.formulae, lm, data = dat)