map() 的多種用法

使用 purrr 的函式式程式設計基礎

Auriel Fournier

Instructor

非清單輸出

# 對 survey_data 套用 map 並取得列數
map(survey_data, ~nrow(.x))
$`LakeErieS`
[1] 14

$`LakeErieN`
[1] 14

$`LakeErieW`
[1] 14

$`LakeErieE`
[1] 15
使用 purrr 的函式式程式設計基礎

purrr::map_variants

清單輸出

# 取得列數
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
map(species_names, ~.x)

 

 

字元

# 對 species_names 清單套用 map
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 套用 map 取得各元素的列數 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...