首页 > 解决方案 > 将值放入子列表

问题描述

我的数据如下:

alist <- list()
vec <- c(1, 2, 3)

我想将一个值(在这种情况下是一个对象)放入一个子列表中。但是当我这样做时:

for (i in 1:length(vec)) {
  alist[[i]][1] <- vec
}

由于某种原因,这是不允许的:Error in *tmp* [[i]] : subscript out of bounds。我必须初始化每个子列表吗?如果是这样,这样做的语法是什么?

期望的结果:

desired_out <- list( list(alist = c(1, 2, 3) ), list(alist = c(1, 2, 3) ), list(alist = c(1, 2, 3) ))

编辑:

尝试为整个循环创建可重现的示例(我的实际数据是循环中的循环):

alist <- list()
vec <- c(1, 2, 3)

for (j in 1:2) {
  for (i in 1:length(vec)) {
  alist[[i]][j] <- vec
  }
}

标签: rlistfor-loop

解决方案


这可以满足您的要求,但我认为您的示例对于您原来的嵌套循环问题来说仍然是最小的:

alist <- list()
vec <- c(1, 2, 3)

for (i in 1:length(vec)) {
  alist[[i]] <- list(alist = vec)
}

desired_out <- list(
                  list(alist = c(1, 2, 3)),
                  list(alist = c(1, 2, 3)),
                  list(alist = c(1, 2, 3))
                  )

identical(alist, desired_out)
#> [1] TRUE

reprex 包于 2021-11-05 创建(v2.0.1)


推荐阅读