I'm sure there are other ways to do it, but you could use a combination of purrr::map() and tidyr::separate_rows().
library(tidyverse)
your_list <- list(
PERSON1 = list(
group = "A,B,C",
name = "PersonName1",
age = 25
),
PERSON2 = list(
group = "X,Y,Z",
name = "PersonName2",
age = 28
)
)
df <- tibble(
"id" = names(your_list),
"name" = map_chr(your_list, "name"),
"group" = map(your_list, "group"),
"age" = map_dbl(your_list, "age")
)
df %>%
separate_rows(group)
#> # A tibble: 6 x 4
#> id name group age
#> <chr> <chr> <chr> <dbl>
#> 1 PERSON1 PersonName1 A 25
#> 2 PERSON1 PersonName1 B 25
#> 3 PERSON1 PersonName1 C 25
#> 4 PERSON2 PersonName2 X 28
#> 5 PERSON2 PersonName2 Y 28
#> 6 PERSON2 PersonName2 Z 28
Created on 2019-04-03 by the reprex package (v0.2.1)