46

値が初期化されていない名前付きエントリを含むリストを設定したいと思います(後でそれらに何かを追加する予定です)。人々は一般的にこれをどのように行いますか?終わったよ:

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

しかし、これは一種のハッキーのようです。これを行うには、より標準的な方法が必要です...そうですか?

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)

これは、存在しないエントリを置き換えるため機能するため、それらが作成されます。NULL はエントリを削除することを意味するため、残念ながら list(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 に答える