How does one stop using rowwise in dplyr?

后端 未结 3 440
你的背包
你的背包 2020-12-13 08:33

So, if one wishes to apply an operation row by row in dplyr, one can use the rowwise function, for example: Applying a function to every row of a table using dp

相关标签:
3条回答
  • 2020-12-13 08:56

    You can use as.data.frame(), like below

    > data.frame(a=1:4) %>% rowwise() %>% group_by(a)
    # A tibble: 4 x 1
    # Groups:   a [4]
          a
    * <int>
    1     1
    2     2
    3     3
    4     4
    Warning message:
    Grouping rowwise data frame strips rowwise nature 
    
    > data.frame(a=1:4) %>% rowwise() %>% as.data.frame() %>% group_by(a)
    # A tibble: 4 x 1
    # Groups:   a [4]
          a
    * <int>
    1     1
    2     2
    3     3
    4     4
    
    0 讨论(0)
  • 2020-12-13 09:11

    Just use ungroup()

    The following produces a warning:

    data.frame(a=1:4) %>% rowwise() %>% 
      group_by(a)
    #Warning message:
    #Grouping rowwise data frame strips rowwise nature
    

    This does not produce the warning:

    data.frame(a=1:4) %>% rowwise() %>% 
      ungroup() %>% 
      group_by(a)
    
    0 讨论(0)
  • 2020-12-13 09:20

    As found in the comments and the other answer, the correct way of doing this is to use ungroup().

    The operation rowwise(df) sets one of the classes of df to be rowwise_df. We can see the methods on this class by examining the code here, which gives the following ungroup method:

    #' @export
    ungroup.rowwise_df <- function(x) {
      class(x) <- c( "tbl_df", "data.frame")
      x
    }
    

    So we see that ungroup is not strictly removing a grouped structure, instead it just removes the rowwise_df class added from the rowwise function.

    0 讨论(0)
提交回复
热议问题