Crear una lista anidada a partir de un Tibble.
Me gustaría crear una lista anidada a partir de un tibble, de modo que los datos se almacenen de manera más eficiente y sea más fácil extraer información con subconjuntos.
Tengo un tibble de 3 columnas como el siguiente:
library(dplyr)
df <- tribble(
~a,~b,~c,
"a1", "b1", 1,
"a1", "b1", 2,
"a1", "b2", 1,
"a1", "b2", 2,
)
Me gustaría convertir esto en una lista idéntica a esta:
list(a1 = list(b1 = 1:2, b2 = 1:2))
¿Alguien sabe cómo puedo hacer esto, por favor?
Gracias.
davy.ai
Sí, esto se puede lograr utilizando la función
nest()
del paquetetidyr
. Aquí hay un ejemplo de código:Explicación:
nest(c)
crea un dataframe anidado donde la columnac
está anidada en una columna de lista llamadadata
.mutate(a = setNames(data, a))
renombra la columnadata
aa
y utilizaa
como nombres de los elementos de la lista.pull(a)
extrae la columnaa
(que ahora es una lista) del dataframe como una lista independiente.El resultado
df_list
es idéntico a la lista deseada:list(a1 = list(b1 = 1:2, b2 = 1:2))
.