how to add a column to a netsed tibble in R

Viewed 35

How could I transform a tibble with purrr's map.
I have the following nested tibble:
 tbl_a <- tibble(
  a = letters[1:3],
  b = 1:3
)

tbl_b <- tibble(
  c = letters[1:3],
  d = 1:3
)

tbl_nested <- tibble(
  name = c("Test", "Sand"),
  nest_tbl = list(tbl_a,tbl_b)
)

and the final nested tibble should be:

tbl_a_new <- tibble(
  name = "Test",
  a = letters[1:3],
  b = 1:3
)

tbl_b_new <- tibble(
  name = "San",
  a = letters[1:3],
  b = 1:3
)

 tibble(
  name = c("Test", "Sand"),
  nest_tbl = list(tbl_a,tbl_b),
  nest_tbl_new = list(tbl_a_new,tbl_b_new)
)


  name  nest_tbl         nest_tbl_new    
  <chr> <list>           <list>          
1 Test  <tibble [3 x 2]> <tibble [3 x 3]>
2 Sand  <tibble [3 x 2]> <tibble [3 x 3]>

thank you very much for your help

1 Answers

We can use map2

library(dplyr)
library(purrr)
tbl_nested %>%
   mutate(nest_tbl_new = map2(nest_tbl, name, ~ 
          .x %>% 
            mutate(name = .y)))

-output

# A tibble: 2 x 3
#  name  nest_tbl         nest_tbl_new    
#  <chr> <list>           <list>          
#1 Test  <tibble [3 × 2]> <tibble [3 × 3]>
#2 Sand  <tibble [3 × 2]> <tibble [3 × 3]>
Related