J'aimerais créer une liste imbriquée dans un Tibble, de sorte que les données sont stockées plus efficacement et il est plus facile d'extraire des informations avec des sous-formes.
J'ai une colonne de 3 colonnes comme ce qui suit:
library(dplyr)
df <- tribble(
~a,~b,~c,
"a1", "b1", 1,
"a1", "b1", 2,
"a1", "b2", 1,
"a1", "b2", 2,
)
Je voudrais convertir cela en une liste identique à celle-ci:
list(a1 = list(b1 = 1:2, b2 = 1:2))
Est-ce que quelqu'un sait comment je peux faire cela s'il vous plaît?
Merci
Quelque chose comme ce qui suit?
library(tidyverse)
df <- tribble(
~a,~b,~c,
"a1", "b1", 1,
"a1", "b1", 2,
"a1", "b2", 1,
"a1", "b2", 2,
)
df %>%
group_by(a,b) %>% group_split() %>% map(~ list(.x$c) %>% set_names(.x$b[1])) %>%
unlist(recursive = F) %>% list %>% set_names(unique(df$a))
#> $a1
#> $a1$b1
#> [1] 1 2
#>
#> $a1$b2
#> [1] 1 2