我想在“词典”中存储一些条目,以便我可以按名称检索它们。我可以像这样间接形成类似的东西:
> 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
为什么会这样,我应该使用什么语法将名称中的矢量或矩阵等对象插入列表?
答案 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的完美答案,您实际上正在使用[<-
作为函数,并且它都提供(通过[
)和接收(通过[<-
)列表。
仅仅因为函数返回的东西不是它会设置某些东西的承诺。