我只需要在两个
for
循环内填充嵌套列表(对于chain
ALPHA和BETA,以及id
),但我收到了subscript out of bounds
错误。
这重现了问题:
mylist <- list()
mylist[['ALPHA']][[1]][['id1']]=46
mylist[['ALPHA']][[2]][['id1']]=28
mylist[['ALPHA']][[1]][['id2']]=87
mylist[['ALPHA']][[2]][['id2']]=12
但是,如果我执行以下操作,我不会收到错误消息,这是为什么?
mylist <- list()
mylist[['ALPHA']][['id1']][[1]]=46
mylist[['ALPHA']][['id1']][[2]]=28
mylist[['ALPHA']][['id2']][[1]]=87
mylist[['ALPHA']][['id2']][[2]]=12
我更喜欢上面的结构,因为接下来我需要包含
ids
的所有 1
的列表以及 ids
的所有 2
的列表。
通过上面的结构很容易获得这些:
mylist1=mylist[['ALPHA']][[1]]
mylist2=mylist[['ALPHA']][[2]]
但是如果替代结构是解决错误的唯一方法,我将如何获得这样的列表?
我尝试了这个,但没有得到我想要的(还有一个嵌套级别):
sapply(mylist, "[", 2)
有什么帮助吗? 谢谢!
您可以做的是预先构建您的列表,然后像这样填写:
mylist <- list("ALPHA" = vector("list", 2))
mylist[['ALPHA']][[1]][['id1']]=46
mylist[['ALPHA']][[2]][['id1']]=28
> mylist
$ALPHA
$ALPHA[[1]]
$ALPHA[[1]]$id1
[1] 46
$ALPHA[[2]]
$ALPHA[[2]]$id1
[1] 28