我有一个列表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个元素。
答案 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