嵌套列表:如何在输入数据之前定义大小

Ver*_*ero 3 r nested-forms

我更喜欢在R中使用列表.现在我想创建几个嵌套列表.我已经知道列表应包含的元素数量,现在想在将数据输入到列表之前定义列表的大小.对于最高级别的列表,其中包含我使用的2个元素

list_example <- vector(mode="list", 2)
Run Code Online (Sandbox Code Playgroud)

现在两个元素中的每一个都应该包含3个元素:再次包含列表的列表等等...总共我有7个级别,即2*3*3*4*2*3*3组合的树.有一种简洁的方法来定义这种深层嵌套列表结构的大小吗?非常感谢你提前!!

Bac*_*lin 6

你可以使用递归函数来做到这一点.

rec.list <- function(len){
    if(length(len) == 1){
        vector("list", len)
    } else {
        lapply(1:len[1], function(...) rec.list(len[-1]))
    }
}

l <- rec.list(c(2, 3, 3, 4, 2, 3, 3))
Run Code Online (Sandbox Code Playgroud)

或者可能使用7-d列表数组?它起初可能看起来很奇怪,但它是一个完全有效的数据结构.

l <- vector("list", 2*3*3*4*2*3*3)
dim(l) <- c(2, 3, 3, 4, 2, 3, 3)
l[[1,1,1,1,1,1,1]] <- "content"
Run Code Online (Sandbox Code Playgroud)

  • +1 a 7D数组非常适合您知道列表中的每个节点都有固定数量的子节点的情况.没有足够的人知道你可以拥有矩阵和列表数组,就像原子类型一样. (2认同)