在R列表中插入元素

时间:2011-08-19 22:08:28

标签: list r dictionary vector

我想在“词典”中存储一些条目,以便我可以按名称检索它们。我可以像这样间接形成类似的东西:

> a = list(c(1,2),c(9,9,0,0))
> names(a) = c("first","second")
> a
$first
[1] 1 2

$second
[1] 9 9 0 0

但是,我不能通过简单地按名称插入它们来做同样的事情:

> a=list()
> a["first"] = c(1,2)
Warning message:
In a["first"] = c(1, 2) :
  number of items to replace is not a multiple of replacement length
> a
$first
[1] 1

为什么会这样,我应该使用什么语法将名称中的矢量或矩阵等对象插入列表?

2 个答案:

答案 0 :(得分:6)

您的问题是您使用[而不是[[。这应该有效:

a[['first']] <- c(1,2)

应该这样:

a$first <- c(1,2)

请注意,[会为您提供子列表,而[[会访问特定的元素

答案 1 :(得分:3)

你有一个很好的答案。这是一个等价的答案:

 a=list()
 a["first"] = list(c(1,2))
 a
# $first
# [1] 1 2

因此,为了扩展joran的完美答案,您实际上正在使用[<-作为函数,并且它都提供(通过[)和接收(通过[<-)列表。

仅仅因为函数返回的东西不是它会设置某些东西的承诺。