1

R のリストに要素を挿入したいと思います。問題は、変数内に名前を含めたいということです。

> list(c = 2)
$c
[1] 2

理にかなっています。明らかに、2 を含む「c」という名前のリスト項目が必要です。

> a <- "b"
> list(a = 1)
$a
[1] 1

おっと。リストを作成するときに、単語を名前ではなく変数として扱うように R に指示するにはどうすればよいですか?

私が試したいくつかのこと:

> list(eval(a)=2)
Error: unexpected '=' in "list(eval(a)="
> list(a, 2)
[[1]]
[1] "b"

[[2]]
[1] 2
> list(get(a) = 2)
Error: unexpected '=' in "list(get(a) ="

すでに list() が配置されている場合、これを実行できることはわかっています。

> ll<-list()
> ll[[a]]=456
> ll
$b
[1] 456

...しかし:

> list()[[a]]=789
Error in list()[[a]] = 789 : invalid (NULL) left side of assignment

名前が変数に含まれる要素を含む匿名リストを作成するにはどうすればよいですか?

4

1 に答える 1

6

1 つのオプション:

a <- "b"
> setNames(list(2),a)
$b
[1] 2

またはやや「自然」:

l <- list(2)
names(l) <- a

のコードをsetNames見ると、これら 2 つのメソッドが非常に同一であるため、R での「これを行う方法」は、基本的にオブジェクトを作成してから名前を設定するという 2 つのステップであることがわかります。setNamesそれを行うための便利な方法です。

于 2013-06-03T21:25:35.650 に答える