una - tablas en r
¿Cómo crear una lista con nombres pero sin entradas en R/Splus? (3)
Lo haría así:
mylist.names <- c("a", "b", "c")
mylist <- vector("list", length(mylist.names))
names(mylist) <- mylist.names
Me gustaría configurar una lista con las entradas con nombre cuyos valores se dejan sin inicializar (planeo agregarles cosas más tarde). ¿Cómo hace la gente en general? Hice:
mylist.names <- c("a", "b", "c")
mylist <- as.list(rep(NA, length(mylist.names)))
names(mylist) <- mylist.names
pero esto parece un poco hacky. Tiene que haber una forma más estándar de hacer esto ... ¿verdad?
Otra forma complicada de hacerlo:
mylist.names <- c("a", "b", "c")
mylist <- NULL
mylist[mylist.names] <- list(NULL)
Esto funciona porque reemplazas las entradas no existentes para que se creen. La lista (NULL) es lamentablemente necesaria, ya que NULL significa QUITAR una entrada:
x <- list(a=1:2, b=2:3, c=3:4)
x["a"] <- NULL # removes the "a" entry!
x["c"] <- list(NULL) # assigns NULL to "c" entry
Una versión un poco más corta que Thilo :)
mylist <- sapply(mylist.names,function(x) NULL)