如何在 R 中正确填充嵌套列表并访问其子元素

问题描述 投票:0回答:1

我只需要在两个

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)

有什么帮助吗? 谢谢!

r list populate
1个回答
0
投票

您可以做的是预先构建您的列表,然后像这样填写:

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
© www.soinside.com 2019 - 2024. All rights reserved.