今天要來紀錄利用purrr套件進行functional programming,
purrr套件中的 map() 函式系列主要用來應用函式於向量或列表(list)的每個元素,代替傳統的 for 迴圈方法
map(.x, .f, ...)
對 l1 中的每個向量進行降序排序:
library(purrr)
l1 <- list(x = c("a", "b"), y = c("c", "d"))
result_map <- map(l1, sort, decreasing = TRUE)
print(result_map)
map2(.x, .y, .f, ...)
將 x 和 y 中的對應元素相乘:
x <- list(a = 1:10, b = 11:20, c = 21:30)
y <- list(1, 2, 3)
result_map2 <- map2(x, y, \(x, y) x * y)
print(result_map2)
imap(.x, .f, ...)
回傳 x 中每個元素及其名稱(取向量的第一個數值)的組合:
result_imap <- imap(x, \(val, name) paste(name, ": ", val[1]))
print(result_imap)
or
result_imap <- imap(x, ~ paste(.y, ": ", .x[1]))
print(result_imap)
pmap(.l, .f, ...)
將 x、y 和 z 中的元素組合進行計算:
z <- list(4, 5, 6)
result_pmap <- pmap(list(x, y, z), function(first, second, third) first * (second + third))
print(result_pmap)
今天的小筆記先到這邊~
參考資料: