varias superponer studio listas lineas graficos graficas creacion r list names

studio - superponer graficas en r



¿Se pueden crear listas con ese nombre en función de los nombres de los objetos de entrada? (4)

Casualmente, acabo de escribir esta función. Se parece mucho a la solución de @joran, pero trata de no pisar los argumentos ya nombrados.

namedList <- function(...) { L <- list(...) snm <- sapply(substitute(list(...)),deparse)[-1] if (is.null(nm <- names(L))) nm <- snm if (any(nonames <- nm=="")) nm[nonames] <- snm[nonames] setNames(L,nm) } ## TESTING: a <- b <- c <- 1 namedList(a,b,c) namedList(a,b,d=c) namedList(e=a,f=b,d=c)

Copiado de los comentarios: si desea algo de un paquete CRAN, puede usar Hmisc::llist :

Hmisc::llist(a, b, c, d=a, labels = FALSE)

La única diferencia aparente es que los vectores individuales también tienen nombres en este caso.

Me sería muy útil poder crear un objeto de lista R sin tener que especificar los nombres de cada elemento. Por ejemplo:

a1 <- 1 a2 <- 20 a3 <- 1:20 b <- list(a1,a2,a3, inherit.name=TRUE) > b [[a1]] [1] 1 [[a2]] [1] 20 [[a3]] [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Esto sería ideal. ¿Alguna sugerencia?


El paquete tibble tiene una función que puede hacer esto también. Prueba tibble::lst

tibble::lst(a1, a2, a3) # $a1 # [1] 1 # # $a2 # [1] 20 # # $a3 # [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20


Otra idea ,

sapply(ls(pattern=''^a[0-9]''), get) $a1 [1] 1 $a2 [1] 20 $a3 [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20


Una idea aleatoria:

a1<-1 a2<-20 a3<-1:20 my_list <- function(...){ names <- as.list(substitute(list(...)))[-1L] result <- list(...) names(result) <- names result } > my_list(a1,a2,a3) $a1 [1] 1 $a2 [1] 20 $a3 [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

(La idea es robada del código en data.frame ).