46

我想建立一个包含命名条目的列表,其值未初始化(我计划稍后向它们添加内容)。人们通常如何做到这一点?我弄完了:

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

但这似乎有点hacky。必须有一种更标准的方式来做到这一点......对吗?

4

3 回答 3

60

我会这样做:

mylist.names <- c("a", "b", "c")
mylist <- vector("list", length(mylist.names))
names(mylist) <- mylist.names
于 2011-04-16T17:02:04.387 回答
35

比 Thilo 短一点的版本 :)

mylist <- sapply(mylist.names,function(x) NULL)
于 2011-04-17T12:36:16.830 回答
9

另一种棘手的方法是:

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

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

这是有效的,因为您替换了不存在的条目,所以它们被创建了。不幸的是, list(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
于 2011-08-03T17:52:41.977 回答