Подтвердить что ты не робот

Как создать список с именами, но без записей в R/Splus?

Я хотел бы создать список с именованными записями, значения которых оставлены неинициализированными (я планирую добавить к ним материал позже). Как люди обычно это делают? Я сделал:

mylist.names <- c("a", "b", "c")
mylist <- as.list(rep(NA, length(mylist.names)))
names(mylist) <- mylist.names

но это похоже на хакерство. Должен быть более стандартный способ сделать это... правильно?

4b9b3361

Ответ 1

Я бы сделал это следующим образом:

mylist.names <- c("a", "b", "c")
mylist <- vector("list", length(mylist.names))
names(mylist) <- mylist.names

Ответ 2

Немного короче, чем Thilo:)

mylist <- sapply(mylist.names,function(x) NULL)

Ответ 3

Еще один сложный способ сделать это:

mylist.names <- c("a", "b", "c") 

mylist <- NULL
mylist[mylist.names] <- list(NULL)

Это работает, потому что вы заменяете несуществующие записи, поэтому они созданы. Список (NULL), к сожалению, требуется, поскольку NULL означает УДАЛЕНИЕ записи:

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