我试图将一些结构(表示为列表)存储到多维数组布局中。这是一个例子,首先我们从一些计算中返回这样的结构列表:
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
。那是为什么?
答案 0 :(得分:1)
使用[[
:fooA[[1, 1, 1]]$name
。