How to use tidyr::separate when the number of needed variables is unknown [duplicate]

Solution 1:

This is a good question - my usual repsonse is to use strsplit, then unnest and spread, which is also not super efficient:

library(dplyr)
library(tidyr)

dat %>% mutate(to = strsplit(to, ",")) %>%
        unnest(to) %>%
        group_by(from) %>%
        mutate(row = row_number()) %>%
        spread(row, to)

Source: local data frame [4 x 5]

                 date                from                   1                   2                 3
               (time)               (chr)               (chr)               (chr)             (chr)
1 2015-10-22 15:03:17   [email protected]   [email protected] [email protected]                NA
2 2015-10-22 15:03:17   [email protected] [email protected]                  NA                NA
3 2015-10-22 15:03:17 [email protected]     [email protected]   [email protected] [email protected]
4 2015-10-22 15:03:17     [email protected]   [email protected]                  NA                NA

Solution 2:

We could use cSplit

library(splitstackshape) 
cSplit(dat, 'to', ',')