我是R新手,刚刚学习了apply
函数及其工作原理。我只是想在几年内从产品颜色和品牌中提取适合变量x的lm
的系数。按功能应用lm()
我知道我可以创建一个for循环和模型年的数据子集并适合它,但我认为它的时间我开始使用更多的内置函数,所以我希望能够使用by函数或其中一个应用功能。这就是我的想法。
#some made up data
x<-rnorm(50,13400,1200)
color<-sample(factor(c("Red","Black","Blue","Green","White")),50,replace=T)
year<-sample(factor(2006:2012),50,replace=T)
brand<-sample(factor(c("A","B","C","D")),50,replace=T)
d<-data.frame(x,color,year,brand)
#now I want to fit the model lm(x~color+brand) for each year level
#this is what I was thinking...
tmp<-with(d,by(x,year,function(y) lm(x~color,data=y)))
sapply(tmp,coef)
错误的eval(predvars,数据,ENV):数字 'ENVIR' 精氨酸不长度当我进入
一个help(by)
我立足这个离exapmleř得到的
你混合不同的范式设立环境:该'with'范式和'数据= '范例,而且,d $ x变量有50个不同的值,所以你只会将单行数据帧传递给lm()。看起来mplourde能够辨别你的意图,所以我会在你之后删除这个注释接受他/她的回答 –
我建议你,但通过“品牌”只...并保持简单...也许然后我会明白它是如何工作的 – moldovean