【问题标题】:When does dplyr's ungroup() function drop the 'vars' attribute?dplyr 的 ungroup() 函数何时删除 'vars' 属性?
【发布时间】:2019-01-23 17:36:50
【问题描述】:

我直观地预计使用ungroup() 函数会删除'vars' 属性。有时会,有时不会。规则是什么?我正在尝试了解分组/取消分组的内部原理。

考虑以下两个示例(在 R 3.4.4 上使用 dplyr 0.7.4)。在第一个中,保留了“vars”属性。在第二个它被丢弃。

#Example 1
models <- mtcars %>% group_by(cyl) %>% do(mod = lm(mpg ~ disp, data = .)) 
   %>% ungroup() 
attributes(models)

$row.names [1] 1 2 3

$vars [1] "cyl"

$drop [1] 是的

$names [1] "cyl" "mod"

$class [1] "tbl_df" "tbl" "data.frame"

#Example 2
attributes(mtcars %>% group_by(cyl) %>% count() %>% ungroup())

$class [1] "tbl_df" "tbl" "data.frame"

$names [1] "cyl" "n"

$row.names [1] 1 2 3

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    不同之处在于group_by %&gt;% do返回rowwise_df,而group_by %&gt;% count返回grouped_df,而对于rowwise_dfungroup只删除rowwise_df类属性并保留其他与行相关的属性属性未触及,另见How does one stop using rowwise in dplyr

    mtcars %>% group_by(cyl) %>% do(mod = lm(mpg ~ disp, data = .)) %>% class()
    # [1] "rowwise_df" "tbl_df"     "tbl"        "data.frame"
    
    mtcars %>% group_by(cyl) %>% count() %>% class()
    # [1] "grouped_df" "tbl_df"     "tbl"        "data.frame"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-05
      • 1970-01-01
      • 1970-01-01
      • 2021-12-10
      • 1970-01-01
      • 2021-05-29
      • 1970-01-01
      • 2017-11-29
      相关资源
      最近更新 更多