10.4 map2 系列函数
map2 系列函数是对 map 系列函数的升级,map 系列函数是一个列表参数,而 map2 系列是两个列表参数。常用函数如下:
map2(.x, .y, .f, ...)
map2_lgl(.x, .y, .f, ...)
map2_int(.x, .y, .f, ...)
map2_dbl(.x, .y, .f, ...)
map2_chr(.x, .y, .f, ...)
map2_raw(.x, .y, .f, ...)
map2_dfr(.x, .y, .f, ..., .id = NULL)
map2_dfc(.x, .y, .f, ...)
walk2(.x, .y, .f, ...)两个列表相加
x <- list(1, 1, 1)
y <- list(10, 20, 30)
map2(x, y, ~ .x + .y)
#> [[1]]
#> [1] 11
#>
#> [[2]]
#> [1] 21
#>
#> [[3]]
#> [1] 31
map2(x, y, `+`)
#> [[1]]
#> [1] 11
#>
#> [[2]]
#> [1] 21
#>
#> [[3]]
#> [1] 31两个向量分别相加后构造新的数据框
ex_fun <- function(arg1, arg2){
col <- arg1 + arg2
x <- as.data.frame(col)
}
arg1 <- 1:4
arg2 <- 10:13
map2_dfr(arg1, arg2, ex_fun)
#> col
#> 1 11
#> 2 13
#> 3 15
#> 4 17
map2_dfc(arg1, arg2, ex_fun)
#> New names:
#> * col -> col...1
#> * col -> col...2
#> * col -> col...3
#> * col -> col...4
#> col...1 col...2 col...3 col...4
#> 1 11 13 15 17两个列表中取较小值
df <- data.frame(
x = c(1, 2, 5),
y = c(5, 4, 8)
)
pmin(df$x, df$y)
#> [1] 1 2 5
map2_dbl(df$x, df$y, min)
#> [1] 1 2 5