探索 R 库:Purrr

发布日期:2026-07-03 21:32:03   来源 : 杭州电子商务研究院    浏览量 :4
杭州电子商务研究院 发布日期:2026-07-03 21:32:03  
4

介绍

从本质上讲,R 是一种函数式编程语言,而 purrr 包通过提供不同的方法来处理函数和向量,增强了 R 的函数式编程方面。

函数式编程的概念是一个单独的主题,需要单独讨论。您可以在此处找到概述,但为了让您有一个基本的概念,这里有一个简短的示例。

假设您正在处理一个仅包含数值的小数据集,但由于数据输入错误,几列包含字符。如果您不遵循函数式编程原则,您将转到每个单元格位置手动替换数据点。如果您遵循函数式编程原则,您将创建一个函数,该函数将数据集作为参数并用适当的值替换字符。

介绍 Purrr

如上所述,purrr 增强了 R 的函数式编程方面。您可以使用此包来避免许多循环并编写易于理解的简单代码。但在此之前,您需要安装此包:

      install.packages("purrr")

# alternate way
install.packages("tidyverse")
    

介绍 map() 函数

purrr 包的 map 函数将一个函数应用于向量的每个元素。如果该函数返回一个向量,则 map 函数返回一个列表。还有两种可用的 map 函数变体:map_ifmap_at。这些变体采用额外的谓词函数来确定函数将转换向量的哪些元素。

      # Applying map function on a vector

library(purrr)
library(dplyr)

1:10 %>%
  map(rnorm, n = 10)
    

运行上述代码可获得包含正态分布数据的列表。map 函数的语法为:[map(.x, .f, ...)]。. x是原子向量列表,.f是函数或公式,...是传递给映射函数的附加参数。

引入返回原子向量的 Map 函数

有一些映射函数始终返回原子向量。向量的类型取决于您在代码中使用的映射函数类型。以下是返回原子向量的映射函数:map_lgl()map_int()map_dbl()map_chr()

      1:10 %>%
  map(rnorm, n = 10)%>%
map_dbl(mean)
    

在上面的代码中,map_dbl()中传入了一个列表,它是map()函数的输出。运行代码以了解输出。

map() 函数的实际示例

以下示例展示了在使用mtcars数据集构建数据科学模型时如何使用 map() 函数。首先,根据第一列的值对数据进行拆分。然后在每次拆分时应用线性模型。map ()方法将应用lm()函数并生成模型数量,该数量将等于拆分数量。之后,它将汇总函数应用于每个模型,并从该输出中map_dbl绘制r.squared值。您可以在不同的数据集中遵循相同的模式,以查看划分数据是否可以提高模型的性能。

      # Loading data 
data(mtcars)

mtcars %>%
# Splitting data on cyl column
  split(.$cyl) %>%
# Applying lm() to create linear models
  map(~ lm(mpg ~ wt, data = .x)) %>%
# Generating summary of each model
  map(summary) %>%
# Withdrawing r.squared value 
  map_dbl("r.squared")
    

结论

函数式编程是 R 的一个非常强大的方面,purrr 包的map()函数增强了这一方面。在本指南中,您已经了解了一个真实示例,其中我们应用map()函数来创建不同的模型而无需重复代码。purrr 包中提供了不同的 map 函数变体,可用于不同的场景。您可以在此处找到更多信息

您可以遵循相同的示例,并在 R 中对不同的数据集应用map()函数。如果您正在从事数据科学项目,那么您可以使用 purrr。

以上内容来自杭州电子商务研究院推送
关注
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据