Как создать список с именами, но без записей в R / Splus? - PullRequest
41 голосов
/ 16 апреля 2011

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

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

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

Ответы [ 3 ]

50 голосов
/ 16 апреля 2011

Я бы сделал это так:

mylist.names <- c("a", "b", "c")
mylist <- vector("list", length(mylist.names))
names(mylist) <- mylist.names
24 голосов
/ 17 апреля 2011

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

mylist <- sapply(mylist.names,function(x) NULL)
9 голосов
/ 03 августа 2011

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

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
...