purrr映射2(x,y,fun),但是对于x的每个元素,都要执行y的所有元素

purrr映射2(x,y,fun),但是对于x的每个元素,都要执行y的所有元素,r,purrr,R,Purrr,发件人:我们看到: x <- list(1, 10, 100) y <- list(1, 2, 3) map2(x, y, ~ .x + .y) 但如果需要的是: 2, 3, 4, 11, 12, 13, 101, 102, 103 即:对于每个x[i]添加y[*] 对于循环似乎很简单,但是。。。显然,我在purrr中遗漏了一些明显的东西。map2在这里不起作用,因为它在两个列表/向量之间并行迭代,如Map或mappy。相反,您要查找的是cross2,它将两个列表交叉连接起来。三

发件人:我们看到:

x <- list(1, 10, 100)
y <- list(1, 2, 3)
map2(x, y, ~ .x + .y)
但如果需要的是:

2, 3, 4, 11, 12, 13, 101, 102, 103
即:对于每个
x[i]
添加
y[*]


对于循环似乎很简单,但是。。。显然,我在purrr中遗漏了一些明显的东西。

map2
在这里不起作用,因为它在两个列表/向量之间并行迭代,如
Map
mappy
。相反,您要查找的是
cross2
,它将两个列表交叉连接起来。三种选择:

库(purrr)
x[1]23 4 11 12 13 101 102 103
交叉点2(y,x)%>%map_dbl(~sum(unlist(.x)))
#> [1]   2   3   4  11  12  13 101 102 103
交叉点2(y,x)%%>%simplify\u all()%%>%map\u dbl(总和)
#> [1]   2   3   4  11  12  13 101 102 103
如果列表只是数字,另一个选项是
outer

outer(未列出(x)、未列出(y),`+`)
#>      [,1] [,2] [,3]
#> [1,]    2    3    4
#> [2,]   11   12   13
#> [3,]  101  102  103
2, 3, 4, 11, 12, 13, 101, 102, 103