首页 文章

使用dplyr比较模型

提问于
浏览
2

我正在研究do()函数的dplyr文档中的示例,所有这些都很好,直到我遇到这个片段来总结模型比较: # compare %>% summarise(p.value = aov$Pr(>F)) 错误是"Error: expecting a single value" . 所以我找到了直接访问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

Looking into the structure of compare

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')进行总结,可以直观地使用[[]]运算符 . 而且如果有更好的方法可以做到这一点 .

1 回答

  • 1

    你可以试试

    compare %>% do(.$aov['Pr(>F)']) %>% na.omit()
    

相关问题