在for循环中为列表的每个元素添加两个整数

时间:2018-05-05 07:37:43

标签: r list for-loop

如果这个问题过于笼统,请告诉我。

我试图用嵌套for循环实现for循环。每次for循环运行时,它将print两个整数值或next到下一次迭代。

结果,我有输出  来自for循环看起来像这样:

[1] 10 57
[1] 10 58
[1] 10 59
[1] 10 63
[1] 10 64
[1] 10 67
[1] 10 68
[1] 10 69
[1] 10 70
[1] 10 71
[1] 10 72
[1] 10 75
[1] 10 76
[1] 10 77
[1] 10 78
[1] 10 79
[1] 10 80
[1] 10 82
[1] 10 86
[1] 10 87
[1] 10 90

我想知道在列表中插入这些整数对的最佳做法是什么。由于有一个for循环,迭代器i嵌套在for循环中,迭代器为j,我不能只写:

list[[i]] <- c(i, j)

1 个答案:

答案 0 :(得分:0)

indx是一个带有一些随机值的向量:

[1] 58 61 67 69 70 72 78 79 84 85

我会写的for循环:

for(i in 1:3){
  for(j in indx){
    print(c(i, j))
  }
}

会产生以下输出(不将其分配给对象):

[1]  1 58
[1]  1 61
[1]  1 67
[1]  1 69
[1]  1 70
[1]  1 72
[1]  1 78
[1]  1 79
[1]  1 84
[1]  1 85
[1]  2 58
[1]  2 61
...
[1]  3 84
[1]  3 85

如果您尝试将其保存到矢量中,则此代码适用于您:

myls <- vector()
for(i in 1:3){
  for(j in indx){
      myls <- c(myls, c(i, j))
  }
}

修改 根据OP的附加评论,我想通过附加ij的每个组合作为列表元素,向您展示直接获取列表的另一种方式:

indx <- c(58, 61, 67, 69, 70, 72, 78, 79, 84, 85)
myls <- list()
for(i in 1:3){
  for(j in indx){
      myls <- c(myls, list(c(i, j)))
  }
}

您的myls变量现在是一个列表:

myls[1:3]

[[1]]
[1]  1 58

[[2]]
[1]  1 61

[[3]]
[1]  1 67