首页 > 解决方案 > R用循环填充列表列表会产生错误

问题描述

我正在从事一个需要我将大量数据填充到列表列表中的项目。我不断收到“下标越界”错误。我理解这意味着什么,并且我尝试过调试,但是我所看到的一切都告诉我它应该可以工作。

我通过下面的简化示例重新创建了错误:

tl <- list(list())
max <- 3
for (i in 1:max) {
  tl[[i]][[1]] <- 1
  tl[[i]][[2]] <- 2
  tl[[i]][[3]] <- 3
}

运行它会产生错误Error in '*tmp*'[[i]] : subscript out of bounds。为什么会出现这种情况?我的解释是,当 'i' 达到 2 时,它应该跳转到列表的第二级(在填充之前它是空的,但这是发生错误的地方)。

关于为什么会发生这种情况的任何见解都会非常有帮助。如果我能澄清任何事情,请告诉我。这是从一个包含更大列表的项目中简化的,但我尽量保持简单。

标签: rnested-listsdata-manipulation

解决方案


tl <- list(list())不创建列表列表,它只是创建一个列表。
在 for 循环中添加tl[[i]]<-list()以创建子列表。

tl <- list()
max <- 3
for (i in 1:max) {
  #create the sublists
  tl[[i]]<-list()
    tl[[i]][[1]] <- 1
    tl[[i]][[2]] <- 2
    tl[[i]][[3]] <- 3
}

推荐阅读