library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.2     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.3     ✔ tibble    3.2.1
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
# Tạo một danh sách các số
numbers <- list(1, 2, 3, 4, 5)

# Áp dụng hàm bình phương lên từng phần tử của danh sách
squared_numbers <- map(numbers, ~ .x^2)
print(squared_numbers)
## [[1]]
## [1] 1
## 
## [[2]]
## [1] 4
## 
## [[3]]
## [1] 9
## 
## [[4]]
## [1] 16
## 
## [[5]]
## [1] 25
# Tạo vector các số nguyên
integers <- c(-3, -1, 0, 2, 5)

# Áp dụng hàm tính giá trị tuyệt đối lên vector và trả về vector số thực
abs_values <- map_dbl(integers, abs)

print(abs_values)
## [1] 3 1 0 2 5
# Tạo danh sách các vector số nguyên
number_lists <- list(c(1, 2, 3), c(4, 5, 6), c(7, 8, 9))

# Áp dụng hàm tính tổng lên từng vector trong danh sách và trả về vector số thực
sum_values <- map_dbl(number_lists, ~ sum(.x))

print(sum_values)
## [1]  6 15 24
# Lặp qua danh sách và in ra mỗi phần tử
walk(numbers, ~ print(paste("Number:", .x)))
## [1] "Number: 1"
## [1] "Number: 2"
## [1] "Number: 3"
## [1] "Number: 4"
## [1] "Number: 5"
# Tạo danh sách kết quả từ việc lặp qua danh sách đầu vào
results <- map(numbers, ~ ifelse(.x %% 2 == 0, "Even", "Odd"))
print(results)
## [[1]]
## [1] "Odd"
## 
## [[2]]
## [1] "Even"
## 
## [[3]]
## [1] "Odd"
## 
## [[4]]
## [1] "Even"
## 
## [[5]]
## [1] "Odd"
  # Tạo tập dữ liệu mẫu
  data <- data.frame(group = c("A", "B", "A", "B", "A"),
                     value = c(10, 20, 15, 25, 12))
  
  # Áp dụng hàm tính trung bình theo nhóm sử dụng map()
  mean_by_group <- data %>%
    group_by(group) %>%
    summarise(mean_value = mean(value))
  
  print(mean_by_group)
## # A tibble: 2 × 2
##   group mean_value
##   <chr>      <dbl>
## 1 A           12.3
## 2 B           22.5
# Danh sách các học sinh và điểm số tương ứng

students = c("Alice", "Bob", "Charlie")
scores = c(85, 70, 92)

# Áp dụng hàm paste() để kết hợp tên học sinh và điểm số tương ứng
result <- map2(students, scores, ~ paste(.x, ":", .y))
print(result)
## [[1]]
## [1] "Alice : 85"
## 
## [[2]]
## [1] "Bob : 70"
## 
## [[3]]
## [1] "Charlie : 92"