多个输入的顺序迭代
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) }
这看起来应该很简单。我有 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) }