map() 的多种用法

使用 purrr 掌握函数式编程基础

Auriel Fournier

Instructor

非列表输出

# 遍历 survey_data 并获取行数
map(survey_data, ~nrow(.x))
$`LakeErieS`
[1] 14

$`LakeErieN`
[1] 14

$`LakeErieW`
[1] 14

$`LakeErieE`
[1] 15
使用 purrr 掌握函数式编程基础

purrr::map 的变体

列表输出

# 获取行数
map(survey_data, ~nrow(.x))

   

     

Double,数值类型之一

# 获取行数
map_dbl(survey_data, ~nrow(.x))
$`LakeErieS`
[1] 14

$`LakeErieN`
[1] 14

$`LakeErieW`
[1] 14

$`LakeErieE`
[1] 15
14 14 14 15
使用 purrr 掌握函数式编程基础

map_lgl()

列表

# 获取行数
map(survey_data, ~nrow(.x))

 

 

逻辑型

# 判断元素是否有 14 行
map_lgl(survey_data, ~nrow(.x)==14)
$`LakeErieS`
[1] 14

$`LakeErieN`
[1] 14

$`LakeErieW`
[1] 14

$`LakeErieE`
[1] 15
TRUE TRUE TRUE FALSE
使用 purrr 掌握函数式编程基础

map_chr()

列表输出

# 遍历 species_names 列表
map(species_names, ~.x)

 

 

字符型

# 遍历 species_names 列表
map_chr(species_names, ~.x)
$`LakeErieS`
[1] "Green Frog"

$`LakeErieN`
[1] "American Bullfrog"

$`LakeErieW`
[1] "Gray Treefrog"

$`LakeErieE`
[1] "Mudpuppy"
LakeErieS       LakeErieN 
"Green Frog"    "American Bullfrog" 
LakeErieW       LakeErieE 
"Gray Treefrog" "Mudpuppy"
使用 purrr 掌握函数式编程基础

示例时间!

# 创建名为 survey_rows 的数据框
survey_rows <- data.frame(names = names(survey_data),
                       rows = NA)

# 遍历 survey_data,获取各元素的行数 survey_rows$rows <- map_dbl(survey_data, ~nrow(.x))
# 打印 survey_rows 数据框 survey_rows
    names       rows
1   LakeErieS   14
2   LakeErieN   14
3   LakeErieW   14
4   LakeErieE   15
使用 purrr 掌握函数式编程基础

让我们来 purrr 练习!

使用 purrr 掌握函数式编程基础

Preparing Video For Download...