【问题标题】:Using dplyr to compare models使用 dplyr 比较模型
【发布时间】: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”)可以直观地使用 [[]] 运算符。以及是否有更好的方法来做到这一点。

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    你可以试试

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

    【讨论】:

    • 很有趣....虽然也可以按组获取 pvalues 的第一行。他们是空白
    • @miles2know 如果要删除NA,请使用na.omit()
    • @miles2know compare %&gt;% do(.$aov) 获取所有组件
    猜你喜欢
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 2011-06-23
    相关资源
    最近更新 更多