использование функции распространения () в карте () - PullRequest
2 голосов
/ 09 марта 2020

Я изо всех сил пытаюсь использовать spread () внутри функции map (). Вот пример данных:

data1 <- tibble(size = c("1", "2", "3", "4"),
               color = c("blue", "green", "yellow", "black"))

data2 <- tibble(size = c("7", "3", "10", "1"),
                color = c("orange", "yellow", "red", "white"))

dataList <- list(data1, data2)

То, что я хочу достичь с помощью своего списка, аналогично тому, что происходит с одним тибблом:

spread(data1, size, color)

# A tibble: 1 x 4
  `1`   `2`   `3`    `4`  
  <chr> <chr> <chr>  <chr>
1 blue  green yellow black

Но я хочу как-то применить этот спред ( ) через два фрагмента моего списка, используя map (). Но я не могу найти правильный способ сделать это ... Есть идеи? Большое спасибо за вашу помощь!

1 Ответ

3 голосов
/ 09 марта 2020

Использование tidyr::pivot_wider, поскольку tidyr::spread амортизируется:

data1 <- tibble::tibble(size = c("1", "2", "3", "4"),
        color = c("blue", "green", "yellow", "black"))

data2 <- tibble::tibble(size = c("7", "3", "10", "1"),
        color = c("orange", "yellow", "red", "white"))

dataList <- list(data1, data2)

purrr::map(.x = dataList, .f = ~tidyr::pivot_wider(.x, names_from = size, values_from = color) )
#> [[1]]
#> # A tibble: 1 x 4
#>   `1`   `2`   `3`    `4`  
#>   <chr> <chr> <chr>  <chr>
#> 1 blue  green yellow black
#> 
#> [[2]]
#> # A tibble: 1 x 4
#>   `7`    `3`    `10`  `1`  
#>   <chr>  <chr>  <chr> <chr>
#> 1 orange yellow red   white
...