R 多输入序列迭代

R 多输入序列迭代,r,purrr,R,Purrr,这似乎应该是直截了当的。我有两个列表,一个包含3个实验的列表,每个实验有3个重复。我想做的是一次性阅读所有9份副本: library(purrr) x = list("exp1", "exp2", "exp3") y = list("rep1", "rep2", "rep3") 使用map()例如: map(x, function(x){paste(x, map(y, paste0))}) 然而,如果我尝试map2(x,y,paste)我只得到两个输入的3个并行迭代 在一个map2调用中,没

这似乎应该是直截了当的。我有两个列表,一个包含3个实验的列表,每个实验有3个重复。我想做的是一次性阅读所有9份副本:

library(purrr)
x = list("exp1", "exp2", "exp3")
y = list("rep1", "rep2", "rep3")
使用
map()
例如:

map(x, function(x){paste(x, map(y, paste0))})
然而,如果我尝试
map2(x,y,paste)
我只得到两个输入的3个并行迭代


在一个
map2
调用中,没有比嵌套map迭代更简单的方法了吗?谢谢。

您必须显式生成不同的组合,例如使用
expand.grid

expand.grid(x = x, y = y) %>% { map2(.$x, .$y, paste) }

使用
dplyr
可以在虚拟列上进行内部联接,然后
粘贴
结果。类似地,使用
data.table
中的
CJ
(交叉连接)。这种方法可以实现
map2(x,y,~paste(x,y))
,但是绑定是按行进行的,而不是按x查找y的所有组合。对不起@timfaber,这只是复制了我的
map2(x,y,paste)
调用三次。顺便说一下,可以编写嵌套调用
map(x,~paste(.x,map(y,paste0))
。在base R中,可以像这样使用
outer
返回粘贴在一起的所有对的向量:
c(outer(x,y,FUN=paste))
。我同意,这比嵌套映射调用更好。谢谢