我根据lm
和plyr
函数的因子级别对某些回归进行拟合,但在尝试访问summary.lm
类的内容时发现问题。
举个例子,我正在运行类似的东西:
sum = dlply (mtcars, .(cyl), lm, formula = mpg ~ wt) %>%
llply(summary)
这为按cyl
变量的级别完成的每个回归提供了摘要。
现在,如果我想获得系数,那么使用llply (sum,coefficients)
很容易,但有时这是不可能的。在这个例子中,如果我想在fstatistic
对象中获取summary.lm
元素,我唯一的机会是手动编写类似sum$'4'$fstatistic
的东西,因为没有特定的函数来获取F - 这个阶级的统计。
然后,需要一种使用运算符$
或类似函数的方法。请注意,上面的代码只是一个例子。我在这里要完成的是使用summary.lm
运算符从dataframe
函数的输出中选择plyr's
或$
对象中的元素。
答案 0 :(得分:1)
您可以将$
作为函数包含在反引号中。
dlply (mtcars, .(cyl), lm, formula = mpg ~ wt) %>%
llply(summary) %>% `$`(`4`) %>% `$`(fstatistic)
value numdf dendf
9.316233 1.000000 9.000000
如果您想将其应用于cyl
的所有级别,可以使用sapply
dlply (mtcars, .(cyl), lm, formula = mpg ~ wt) %>%
llply(summary) %>% sapply(function(x) `$`(x, fstatistic))
4 6 8
value 9.316233 4.337245 8.795985
numdf 1.000000 1.000000 1.000000
dendf 9.000000 5.000000 12.000000