10.2 常规用法
10.2.1 map 系列
- map
用map循环迭代,map函数始终返回list对象。
library(tidyverse)
# 定义一个加10的函数
<- function(.x) {
addTen return(.x + 10)
}map(.x = c(1, 4, 7), .f = addTen)
#> [[1]]
#> [1] 11
#>
#> [[2]]
#> [1] 14
#>
#> [[3]]
#> [1] 17
- map_dbl
用map_dbl循环迭代,map_dbl函数返回vector。
<- function(x) {
add1 +1)*x
(x
}<- map_dbl(1:1000,add1) result1
map_dbl()
输出结果格式为向量。
for 循环版本:
<- vector(length = 1000)
result2 for(i in 1:1000){
<- (i+1) * i
result2[i]
}# 检查结果是否一样
identical(result1,result2)
#> [1] TRUE
10.2.2 pmap 系列
使用pmap可以实现多参数时的向量化迭代,功能极其强大。
<- list(1, 1, 1)
x <- list(10, 20, 30)
y <- list(100, 200, 300)
z pmap(list(x, y, z), sum)
#> [[1]]
#> [1] 111
#>
#> [[2]]
#> [1] 221
#>
#> [[3]]
#> [1] 331
借助数据框实现多个参数的向量化:
<- data.frame(
df 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"