Cómo combinar listas que incluyen tibbles?
Aquí hay listas que incluyen tibbels:
test = list()
l <- list(list(var = "bb", b = 2, c = 3, d = 5), list(var = "a", b = 3, c = 2, d = 4))
l2 <- map(l, ~data.frame(.))
l3 <- map_dfr(l2, ~mutate_all(., as.character))
l4 <- as_tibble(l3)
test[[1]] <- l4
names(test)[1] <- "par"
test[[2]] <- l4
names(test)[2] <- "mas"
myli <- list()
myli[[1]] <- l4
names(myli)[1] <- "par"
myli[[2]] <- l4
names(myli)[2] <- "mas"
Me gustaría extraer el nombre, var y d y combinarlo:
La salida que necesito sería así:
var value list name
bb 5 test par
a 4 test par
bb 5 test mas
a 4 test mas
bb 5 myli par
a 4 myli par
bb 5 myli mas
a 4 myli mas
davy.ai
Para extraer la información necesaria y combinarla, podemos usar los paquetes
purrr
ydplyr
de la siguiente manera:“`{r}
library(purrr)
library(dplyr)
crear una función para extraer la información necesaria
get_info <- function(list_name, list_item) {
name <- list_name
var <- list_item$var
value <- list_item$d
c(var, value, name)
}
utilizar map2_dfr para aplicar la función get_info a cada combinación de nombres de lista e elementos de la lista
result <- map2_dfr(test, names(test), ~map2_dfr(.x, .y, get_info))
result <- bind_rows(result, map2_dfr(myli, names(myli), ~map2_dfr(.x, .y, get_info)))
etiquetar las columnas
colnames(result) <- c(“var”, “value”, “list”, “name”)
result
A tibble: 8 x 4
var value list name
1 bb 5 test par
2 a 4 test par
3 bb 5 test mas
4 a 4 test mas
5 bb 5 myli par
6 a 4 myli par
7 bb 5 myli mas
8 a 4 myli mas
“`