我有一个包含多个组的数据集“关键字”。我想将 glm 单独应用于每个组,以创建一个 glm 列表适合每个组。
我可以用for循环来做到这一点,但这不是 R 精神。相反,我尝试使用by函数来做到这一点:
CTR.glm <- by(keywords,keywordsInSample,
function(x) ifelse(nlevels(factor(x$AveragePosition))>20, # only these keywords will be fit
glm(Clicks ~ poly(log(AveragePosition),2) + offset(log(Impressions)),
family = poisson,data = x),
NA)) # for functions that can't be fit
问题是虽然glm通常返回一个 glm 类对象,我可以从中提取各种好东西,但返回一个列表
> CTR.glm[2]
$`text of second keyword`
(Intercept) poly(log(AveragePosition), 2)1 poly(log(AveragePosition), 2)2
-3.626237 -5.108795 -1.751032
> class(CTR.glm[2])
[1] "list"
除拟合参数外,所有信息均已丢失。有没有办法强制保留有关列表的所有信息?
ps,我尝试使用plyr工具箱,但它卡住了,因为我的关键字中有空格。
pps,这篇文章应该有标签“by”,但我无法创建该标签(stackoverflow 的新标签),有人可以重新标记它吗?