Sức mạnh của lặp

Nền tảng Lập trình Hàm với purrr

Auriel Fournier

Instructor

Lặp mà không dùng purrr

library(readr)
USbirds <- read_csv("us_data.csv")
CANbirds <- read_csv("can_data.csv")
MEXbirds <- read_csv("mex_data.csv")

birdfiles <- list.files(pattern=".csv") birdfiles
"can_data.csv"
"mex_data.csv"
"us_data.csv"
list_of_birdfiles <- list()
for(i in birdfiles){
list_of_birdfiles[[i]] <- read.csv(i)
}
Nền tảng Lập trình Hàm với purrr

Lặp mà không dùng purrr

files <- list.files()
d <- list()

# Lặp qua các giá trị từ 1 đến 10 để thêm chúng vào d
for(i in 1:10){
    d[[i]] <- read_csv(files[i])
}
Nền tảng Lập trình Hàm với purrr

Lặp với purrr

map(object, function)

object - có thể là vector hoặc list

function - bất kỳ hàm R nào nhận đầu vào do object cung cấp

d <- map(files, read_csv)
Nền tảng Lập trình Hàm với purrr

Cùng đi qua một ví dụ

bird_counts
[[1]]
[1] 3 1

[[2]]
[1] 3 8 1 2

[[3]]
[1] 8 3 9 9 5 5

[[4]]
[1] 8 9 7 9 5 4 1 5
Nền tảng Lập trình Hàm với purrr
# Tạo list bird_sum, lặp qua và tính tổng các phần tử của bird_counts
bird_sum <- list()
for(i in seq_along(bird_counts)){
    bird_sum[[i]] <- sum(bird_counts[[i]])}

# Tính tổng mỗi phần tử của bird_counts và đưa vào bird_sum bird_sum <- map(bird_counts, sum) bird_sum
[[1]]
[1] 4

[[2]]
[1] 14

[[3]]
[1] 39

[[4]]
[1] 48
Nền tảng Lập trình Hàm với purrr

Cùng purrr-actice!

Nền tảng Lập trình Hàm với purrr

Preparing Video For Download...