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 nombrar los elementos de diferentes elementos de lista de R?

Estoy buscando una forma eficiente de nombrar los elementos de diferentes elementos de lista con un vector común de nombres. Supongamos que tengo la siguiente lista:

lista inicial
test <- list(a = c("name1", "name2", "name3"),
              b = c(0.1, 0.2, 0.3), 
              c = c(TRUE, FALSE, TRUE))

que se ve así:

test

$a
[1] "name1" "name2" "name3"

$b
[1] 0.1 0.2 0.3

$c
[1]  TRUE FALSE  TRUE

Quiero obtener algo como:

$b
name1 name2 name3 
  0.1   0.2   0.3 

$c
name1 name2 name3 
 TRUE FALSE  TRUE 

Sé que esto se puede obtener mediante algo como…

names(test[[2]]) <- test$a
names(test[[3]]) <- test$a
test$a <- NULL

pero esto solo es factible si el número de elementos de lista es pequeño. Supongo que esto se puede obtener mediante una línea de código. He intentado cosas como lapply(test, FUN = function(x) names(x)[] <- test$a) pero esto no da el resultado deseado.

¡Gracias de antemano!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Puede usar la función lapply para aplicar la misma operación a cada elemento de la lista. En este caso, puede usarla para asignar los nombres de los elementos de la lista al vector de nombres:

    test <- lapply(test, function(x) names(x) <- test$a)
    test$a <- NULL
    

    Esto le dará el resultado deseado:

    $b
    name1 name2 name3 
      0.1   0.2   0.3 
    
    $c
    name1 name2 name3 
     TRUE FALSE  TRUE 
    

Comments are closed.