多个输入的顺序迭代

Sequential iteration over multiple inputs

这看起来应该很简单。我有 2 个列表,一个包含 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 调用中完成此操作?谢谢。

您必须明确生成不同的组合,例如使用 expand.grid:

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