我想设置一个包含命名条目的列表,其值未被初始化(我计划稍后向他们添加内容)。人们通常如何做到这一点?我做完了:
mylist.names <- c("a", "b", "c")
mylist <- as.list(rep(NA, length(mylist.names)))
names(mylist) <- mylist.names
但这似乎有点hacky。必须有一种更标准的方法来做到这一点......对吧?
答案 0 :(得分:50)
我会这样做:
mylist.names <- c("a", "b", "c")
mylist <- vector("list", length(mylist.names))
names(mylist) <- mylist.names
答案 1 :(得分:24)
比Thilo稍短的版本:)
mylist <- sapply(mylist.names,function(x) NULL)
答案 2 :(得分:9)
另一种棘手的方法:
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