使用变量在列表中分配名称?

时间:2014-02-19 21:45:25

标签: r list

如果我有一个变量,例如name.string <- "name",我该如何使用它来在列表中指定值的名称以返回类似

的内容
$name
  [1] "value"

使用list(name.string = "value")返回$name.string [1] value

由于我似乎无法弄清楚的原因,list(get("name.string") = "value")返回

Error: unexpected '=' in "list(get("name.string") ="

显然,我对手动解决方案(在作业中写“名”)不感兴趣,因为这是为数千行复制的。

2 个答案:

答案 0 :(得分:1)

您可以使用双括号按号码或名称进行访问和分配:

mylist                 <- list()
name.string            <- "name"
name.string2           <- "name2"
value                  <- "hello"
value2                 <- "world"

mylist[[name.string]]  <- value
mylist[[name.string2]] <- value2

# an alternative to the previous line
# that fails to create a name:
mylist[[2]]            <- value2 

有关此类作业的详细信息,请参阅help("[[<-")

正如Matthew Plourde所说,这会动态增加您的列表,因此最好预先分配,例如mylist <- vector("list",2)

答案 1 :(得分:0)

您可以使用:

structure(list('value'), names=name.string)

l <- list('value')
names(l) <- name.string

甚至

within(list(), assign(name.string, 'value'))

但不要使用最后一个。