对于循环中的R不打印我需要的

时间:2019-02-28 11:08:19

标签: r loops for-loop

在R中,我希望将list1中的元素添加到list2

list1 = c(1,2,3,4)
list2 = c(2,4,6,8)

for(i in list1){
  for(j in list2){
    print(i + j)
  }
}

我正在寻找要返回的循环

3
6
9
12

但返回

3
5
7
4
6
8
5
7
9

我如何才能得到第一个以前的案件?

3 个答案:

答案 0 :(得分:1)

这是一个经典问题,与许多其他问题重复。

每个for循环都在迭代器上进行迭代。这些评论回答了您的问题,但是为了便于理解,下面是一个示例,它将向您说明发生这种情况的原因:

list1 = c(1,2,3,4)
list2 = c(2,4,6,8)
for(i in seq_along(list1)){
  for(j in seq_along(list2)){
    cat("list1[[", i,"]] + list2[[", j,"]] =",list1[[i]],"+",list2[[j]],"=", list1[[i]] + list2[[j]],"\n")
  }
}

这应该说明for循环的工作原理。

答案 1 :(得分:1)

library(tidyverse)

list1 = c(1,2,3,4)
list2 = c(2,4,6,8)

purrr::walk2(list1, list2, ~print(.x + .y))
[1] 3
[1] 6
[1] 9
[1] 12

list1.x,而list2.y

答案 2 :(得分:1)

如果您使用的是for循环,则需要提及第j个等于i的插入。

for(i in list1){
  for(j in list2[list1==i]){
    print(i + j)
  }
}
[1] 3
[1] 6
[1] 9
[1] 12