将元素添加到深度嵌套的列表中

时间:2020-09-21 07:02:53

标签: r

我正在尝试填充一个深层嵌套的列表-这样的4级列表:-

mylist <- vector(5, mode = "list")
for (i in 1:5)
    {for (j in 1:2)
        {for (k in 1:3)
            {for (m in 1:4)
                {mylist[[i]][[j]][[k]][[m]] <- m
                }
            }
        }
    }

很明显,我在做错事,但不知道怎么办。我有一个名为“ mylist”的列表-模型“ list”的向量

在最高级别,这是5项列表,如5个值“ i”所示。现在,这5个项目中的每一个都是2个项目的列表,如“ j”的值所示。同样,这两个项目中的每一个都是3个项目的列表,如“ k”的值所示。最后,该项目是由'm'值显示的4个项目的列表。

这个想法是用一个特定的值填充'mylist'变量-为了简单起见,我使该值等于'm',但它将是不同的值-实际上,它将是回归的输出。但这无关紧要-显然,但是做什么是怎么做的,我做不到。

似乎可以处理所有变量的值为1的值。当'i'= 1,'j'= 1,'k'= 1且对于所有'm'值时,它也适用那是从1:4开始的'm'。但是,当'j'超过1时,出现'下标超出范围错误'。不确定'k'的值是否也大于1(在我的实际情况下,k从1:1开始)-因此,无法对其进行测试。

任何建议,我要去哪里错了?

最诚挚的问候

Deepak

1 个答案:

答案 0 :(得分:3)

您需要启动l[[i]]<-vector(2, mode = "list")等项目

mylist <- vector(5, mode = "list")
for (i in 1:5){
    mylist[[i]] <- vector(2, mode = "list")
    for (j in 1:2){   
        mylist[[i]][[j]] <- vector(2, mode = "list") 
        for (k in 1:3){   
            mylist[[i]][[j]][[k]] <- vector(3, mode = "list")
            for (m in 1:4){   
                mylist[[i]][[j]][[k]][[m]] <- m
            }
        }
    }
}

此外,较早的代码也可与j = k = 1一起使用,因为默认情况下变量被视为R中的一个元素向量。