在R列表中插入元素

3

我希望能够存储一些“字典”中的条目,以便能够通过名称进行检索。我可以通过间接方式形成类似这样的东西:

> 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个回答

6

您的问题在于您使用了[而不是[[。以下内容应该可以解决您的问题:

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

作为应该这样:
a$first <- c(1,2)

记住,[ 可以给你一个 子列表,而 [[ 可以访问特定的 元素


3

你已经得到了一个好的答案。这里有一个等价的答案:

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

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

仅仅因为一个函数返回某些东西,并不意味着它会设置某些东西。


“稍微有些离题”?因子的东西似乎与问题无关...但如果您发布一个关于因子的适当问题,我可能会告诉您;-) - Tommy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接