【发布时间】:2015-03-28 15:19:42
【问题描述】:
我正在研究 do() 函数的 dplyr 文档中的示例,一切都很好,直到我遇到这个 sn-p 来总结模型比较:# compare %>% summarise(p.value = aov$`Pr(>F)`) 错误是“错误:期望单个值” .所以我找到了一种直接访问 aov 元素列表的方法。这个问题是关于子设置运算符,并询问是否有更好的方法来做到这一点。这是我的完整尝试和解决方案。
models <- group_by(mtcars,cyl) %>% do(mod_lin = lm(mpg ~ disp, data = .), mod_quad = lm(mpg ~ poly(disp,2), data = .))
compare <- models %>% do(aov = anova(.$mod_lin, .$mod_quad))
compare %>% summarise(p.value = aov$'Pr(>F)')
Error: expecting a single value
查看比较的结构
select comparison 1
compare$aov[[1]]
select comparison 1 and all of element 6 (the pvalues)
compare$aov[[1]][6]
just the pvalues
compare$aov[[1]][2,6]
compare %>% summarise(pvalue = aov[2,6]) # this gets the pvalues by group
所以我想我想知道如何使用汇总的类对象(“rowwise_df”、“tbl_df”和“data.frame”)可以直观地使用 [[]] 运算符。以及是否有更好的方法来做到这一点。
【问题讨论】: