grouped operations that result in length not equal to 1 or length of group in dplyr

data.table, dplyr, r

Solution

In `dplyr` version 0.2 you could do this using the `do` operator:

> df %>% group_by(b) %>% do(data.frame(a = rep(.$a[1], 3)))
#Source: local data frame [6 x 2]
#Groups: b
#
#  b a
#1 1 1
#2 1 1
#3 1 1
#4 2 2
#5 2 2
#6 2 2

Problem

I'm not sure which function to use to do the following: ``` library(data.table) dt = data.table(a = 1:4, b = 1:2) dt[, rep(a[1], 3), by = b] # b V1 #1: 1 1 #2: 1 1 #3: 1 1 #4: 2 2 #5: 2 2 #6: 2 2 ``` Both `summarise` and `mutate` are unhappy with this length: ``` library(dplyr) df = data.frame(a = 1:4, b = 1:2) df %.% group_by(b) %.% summarise(rep(a[1], 3)) #Error: expecting a single value df %.% group_by(b) %.% mutate(rep(a[1], 3)) #Error: incompatible size (3), expecting 2 (the group size) or 1 ```

Original source