如何为列表中的每个向量创建for循环

时间:2017-10-02 09:14:53

标签: r list for-loop vector

我有一个列表l,包含四个向量,每个向量包含多个元素,向量长度不一样。

l<- list(2:4,3:5,4:7,5:7)

  for ( i in length(l)){

     print(l)
   }

[[1]]
[1] 2 3 4

[[2]]
[1] 3 4 5

[[3]]
[1] 4 5 6 7

[[4]]
[1] 5 6 7

我想使用for循环为列表中每个向量的所有元素添加值2 也许我们需要(两个for循环)外部将用于列表,内部将用于列表的每个向量,我想获得以下结果:

    [[1]]
    [1] 4 5 6

    [[2]]
    [1] 5 6 7

    [[3]]
    [1] 6 7 8 9

    [[4]]
    [1] 7 8 9

请注意:原始列表包含389个向量,每个向量包含不少于45个元素。

1 个答案:

答案 0 :(得分:0)

更快更清洁的方法是不使用循环。在这里,我们将.x中的每个向量l映射到.x + 2

purrr::map(l, ~.x + 2)
# [[1]]
# [1] 4 5 6
# 
# [[2]]
# [1] 5 6 7
# 
# [[3]]
# [1] 6 7 8 9
# 
# [[4]]
# [1] 7 8 9

如果你真的需要循环版本,只需遍历l的索引并为每个向量添加2。

for (i in seq_along(l)) {
  l[[i]] <- l[[i]] + 2
}
print(l)
# [[1]]
# [1] 4 5 6
# 
# [[2]]
# [1] 5 6 7
# 
# [[3]]
# [1] 6 7 8 9
# 
# [[4]]
# [1] 7 8 9