dplyr的ungroup()函数何时删除'vars'属性?

时间:2018-08-16 17:29:05

标签: r dplyr

我直观地期望使用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

1 个答案:

答案 0 :(得分:2)

区别在于1/N返回group_by %>% do,而rowwise_df返回group_by %>% count,并且仅对于grouped_dfrowwise_df删除ungroup类属性,并保持其他与行相关的属性不变,另请参见以下More About

rowwise_df