我試圖使用下面的函數提取回歸係數;在lapply中如何使用自定義函數提取結果
## customized function to return coef as matrix
cust_lm<- function(varname, data){
y<-data[,varname]
coefOLS<- as.matrix(coef(summary(lm(y~x))));
}
我想用這個函數每次運行使用不同的因變量(獨立變量保持不變)的迴歸。我正在使用lapply
。
## artificial data
x<-rnorm(100,5,3)
ydata<-data.frame(y1=rnorm(100), y2=rnorm(100))
## running regressions together and storing as list
list<-lapply(names(ydata)[1:2], function(x) cust_lm(x, ydata))
我得到了想要的結果,其中list[[1]]
不過coef(summary(lm(ydata[,1]~x)))
和list[[2]]
等於coef(summary(lm(ydata[,2]~x)))
。
我已經寫了幾個SO帖子的幫助。現在我想破譯我的自定義函數以瞭解它是如何工作的,並且我還不清楚lapply
。
我已經創建了自定義函數,參數要求爲(varname, data)
,並且我在lapply
中再次給出cust_lm(x, data)
作爲參數。這是正確的事情嗎?
這是正確的,如果我給,list<-lapply(names(ydata)[1:2], function(z) cust_lm(z, data))
而不是?我對此很困惑。任何幫助/資源表示讚賞。
感謝您的澄清。那麼,'list <-lapply(names(ydata)[1:2],function(z)cust_lm(z,data))'是**錯字**。因此,我可以使用'lapply(names(ydata)[1:2],function(z)cust_lm(z,data))'或'lapply(names(ydata)[1:2]),cust_lm,data = ydata)' – Enigma
但是,當我打電話時,列表中的'cust_lm',這是如何工作的?因爲該函數的參數是'varname'和'data'。但我不是專門在樂隊裏面給阿甘!換句話說,我可以使用'cust_lm'作爲獨佔函數嗎?我在使用'cust_lm(x,data [,y]'時會出錯,爲什麼會這樣?你能澄清一下嗎? – Enigma
'你在列表裏面'是什麼意思?'cust_lm'假設(基於它兩行代碼):在參數data中接收到的對象有一個名稱由參數varname給出的列 – MrGumble