10.5 pmap系列函数

pmap 系列函数可以映射多个(2个以上)参数,两个参数使用 map2 函数。

pmap(.l, .f, ...)

pmap_lgl(.l, .f, ...)

pmap_int(.l, .f, ...)

pmap_dbl(.l, .f, ...)

pmap_chr(.l, .f, ...)

pmap_raw(.l, .f, ...)

pmap_dfr(.l, .f, ..., .id = NULL)

pmap_dfc(.l, .f, ...)

pwalk(.l, .f, ...)
li1 <- list(1,3,5)
li2 <- list(2,4,6)
li3 <- list(2,4,6)
li1 <- c(1,3,5)
li2 <- c(2,4,6)
li3 <- c(2,3,4)
li <- list(li1,li2,li3)
pmap(li,sum)
#> [[1]]
#> [1] 5
#> 
#> [[2]]
#> [1] 10
#> 
#> [[3]]
#> [1] 15
df <- data.frame(
  x = 1:3,
  y = 10:12,
  z = letters[1:3]
)

plus2 <- function(x, y, ...) x + y
pmap_dbl(df, plus2)
#> [1] 11 13 15

注意上述代码中plus2函数的特殊性,运用了…参数

本章开始案例中的 pmap 函数的应用,将各种参数构造为 data.frame,运用好此特性,可以发挥强大作用。

df <- data.frame(
  x = c("apple", "banana", "cherry"),
  pattern = c("p", "n", "h"),
  replacement = c("P", "N", "H"),
  stringsAsFactors = FALSE
  )
pmap(df, gsub)
#> [[1]]
#> [1] "aPPle"
#> 
#> [[2]]
#> [1] "baNaNa"
#> 
#> [[3]]
#> [1] "cHerry"

对大部分数据分析师而言,掌握 map 系列以及 map 变种系列函数即可很好处理大部分数据问题。