1

我想将一个元素插入到 R 中的列表中。问题是我希望它的名称包含在变量中。

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

说得通。我显然想要一个名为“c”的列表项,其中包含 2。

> 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

一种选择:

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

或者更“自然”的:

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

如果您查看其中的代码,setNames您会发现这两种方法是如此相同,以至于 R 中的“执行此操作的方法”实际上基本上是创建对象,然后设置名称,分两步。setNames只是一种方便的方法。

于 2013-06-03T21:25:35.650 回答