es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para extraer la información necesaria y combinarla, podemos usar los paquetes purrr y dplyr 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


    El resultado será:

    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
    “`

Comments are closed.