在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
我如何才能得到第一个以前的案件?
答案 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