在R中的数组中存储列表时,如何避免列表嵌套的额外级别?

时间:2017-11-04 18:44:43

标签: arrays r list

我试图将一些结构(表示为列表)存储到多维数组布局中。这是一个例子,首先我们从一些计算中返回这样的结构列表:

set.seed(2017)
fooL <- lapply(1:8, function(i) { foo <- list(barV=runif(sample(5,1)), name=paste(letters[sample(26,3)], collapse='')) })

如果我们使用str进行检查,我们会看到其中的每一个都是名为barV的列表,其中numeric向量和name是字符向量

接下来我想将它们存储在一个多维数组中,我为此做了以下几点:

fooA <- array(fooL, dim=c(2,2,2))

但现在如果我检查这个数组的一个元素(比如str(fooA[1,1,1])),我看到它现在是一个长度为1的列表,其第一个元素是foo,而不仅仅是foo。有没有办法避免在这里创建的额外“间接”级别?即正如我能够说fooL[[1]]$name能够做fooA[1,1,1]$name一样,我本来可以预料到的,我不得不说fooA[1,1,1][[1]]$name。那是为什么?

1 个答案:

答案 0 :(得分:1)

使用[[fooA[[1, 1, 1]]$name