我试图使用下面的函数提取回归系数;在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