r - purrr映射等效于嵌套的for循环

标签 r purrr

purrr::map等效于:

for (i in 1:4) {
  for (j in 1:6) {
    print(paste(i, j, sep = "-"))
  }
}

要么
lapply(1:4, function(i) 
  lapply(1:6, function(j) 
    print(paste(i, j, sep = "-"))))

从概念上讲,我没有得到的是如何引用内部map函数中的外部循环。
map(1:4, ~ map(1:6, ~ print(paste(.x, ????, sep = "-")))

最佳答案

正如@ r2evans指出的那样,您的第一个调用的.x被屏蔽了。但是,您可以创建一个包含2个参数.x.y的lambda函数,并通过.x参数将先前的.y分配给新的...

我将使用walk而不是map,因为在这种情况下,您仅对副作用(打印)感兴趣

walk(1:4,~ walk(1:6, ~ print(paste(.x, .y, sep = "-")),.y=.x))

另一种选择是使用expand.grid布置组合,然后对具有pwalk的组合(或在其他情况下为pmap)进行迭代
purrr::pwalk(expand.grid(1:4,1:6),~print(paste(.x, .y, sep = "-")))

两种情况下的输出:
[1] "1-1"
[1] "2-1"
[1] "3-1"
[1] "4-1"
[1] "5-1"
[1] "6-1"
[1] "1-2"
[1] "2-2"
[1] "3-2"
[1] "4-2"
[1] "5-2"
[1] "6-2"
[1] "1-3"
[1] "2-3"
[1] "3-3"
[1] "4-3"
[1] "5-3"
[1] "6-3"
[1] "1-4"
[1] "2-4"
[1] "3-4"
[1] "4-4"
[1] "5-4"
[1] "6-4"

关于r - purrr映射等效于嵌套的for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48847613/

相关文章:

r - 如何显示一组与特定颜色相似的颜色?

r - 在 purrr::map 函数中获取迭代名称

R - 总结相对学期序列的类(class)注册

R - 按组合条件过滤数据

r - roxygen2 仅用于记录 R 包还是也用于 R 项目?

r - 在 R 中保存 Leaflet Widget 时出现无效的 UTF-8 错误

r - 从月份推断季度列,从季度推断月份列

r - 在 R 中使用 modelrs bootstrap 获取中位数

使用 purrr 重命名多个数据框列

r - 为什么我看到 R 向量的类是 "integer"而不是 "Vector"