点击上方“蓝字”关注,给铁哥一点支持哟!

上次我们提到了R语言殿堂级人物Hadley Wickham,除了耳熟能详的‘ggplot2’ 软件包以外,他还有很多优秀的作品,比如本文将要讨论的‘purrr’ 软件包中的功能强大的map函数。

铁哥真诚希望大家能够理解R语言中“函数式编程”的奥义,这样的话,大家写的代码就能够显得简洁、优雅且易于其他程序员理解和优化。闲话不多说,为了使用map函数,我们需要先在Rstudio中安装‘purrr’软件包并且加载它,代码如下:

简单来说map函数就是对向量的每一个元素进行函数计算然后返回一个列表(list)。举个简单的例子,map(1:3, f) 等价于 list(f(1), f(2), f(3))。

如果我们用图像展示map函数的原理,可以用以下图像来解释它:

这样看来,是不是觉得原理也特别简单?有朋友问了,这个函数为什么叫map呢?

其实它是来源于数学的一个概念“映射”,map(x,  f)相当于把x向量映射到一个函数空间去。为了提高map( )的计算效率,Hadley Wickham还用C语言重写了这个函数。

map( )函数默认返回一个列表,根据返回值的不同类型,用户可以使用四种map( )函数的变体:map_lgl( ),返回值为逻辑向量,如c(TRUE, FALSE, TRUE, FALSE)这种类型的向量;map_int( ),返回值为整数向量,如c(1, 2, 3, 4, 5)这种类型的向量;map_dbl( ),返回值为双精度向量, 如c(1.22, 3.33, 5.6, 8.99)这种类型的向量 ;map_chr(),返回值为字符向量,如c(‘Li Lei’, ‘Han Meimei’)这种类型的向量。

在使用map函数的时候需要注意一个问题:如果函数f有一些重要的参数,比如mean函数处理缺失数据的参数 na.rm, 我们可能想要删掉那些缺失的数据再计算变量的平均值(即设置na.rm = TRUE)

R代码如下:

图像解释如下,这里蓝色正方形代表传递的参数,如例子中的na.rm = TRUE

这样,map函数的简单用法就讲完了,是不是非常简单酷炫?

为了让大家记住map函数,铁哥又想讲个小故事:铁哥的大学同学小通喜欢学霸女神小张,小通不敢直接表明心意,小通担心表白不成大家朋友也做不了,于是小通写了一个love函数:

这一天,小通鼓起勇气,在数理统计课程上悄悄递给女神小张一张字条:

map(rep(1,3), love)

# rep(1,3)指生成一个重复数字1共3次的向量,如果想重复999次,那么就是rep(1,999)

而且给了小张的闺蜜小王一个U盘,U盘里面正是love函数的定义。这天小张望着星空也想了许久,叹了一口气,若有所思。

第二天,晴空万里,我记得那天武汉大学的樱花

cpp map 获取所有 key_R语言中强大的map函数——铁哥小故事版相关推荐

  1. c语言中有裁剪字符串的函数吗,C语言中的字符串截取函数

    /*======================================================== 子数整数 源程序名 num.??? (pas,c,cpp) 可执行文件名 num. ...

  2. C语言中的光标定位函数

    C语言中的光标定位函数(将光标移动到屏幕的指定位置) 所谓的光标定位函数,就是实现键盘输入坐标值从而把鼠标的光标移动到相应坐标位置的函数模块,在简单的小游戏如贪吃蛇等需要定位输出的程序中有着较为广泛的 ...

  3. c语言sub函数是什么,C语言中的字符串截取函数

    C语言中的字符串截取函数及应用 /*======================================================== 子数整数 源程序名 num.??? (pas,c, ...

  4. c语言随机字符rand,C语言中生产随机数 rand()函数

    一:如果你只要产生随机数而不需要设定范围的话,你只要用rand()就可以了:rand()会返回一随机数值, 范围在0至RAND_MAX 间.RAND_MAX定义在stdlib.h, 其值为214748 ...

  5. C语言中连续调用rand函数,返回值不变

    C语言中连续调用rand函数,返回值不变 最近用C语言随机函数编程发现了一个奇怪的现象: 简易版代码: #include<stdio.h> #include<stdlib.h> ...

  6. bind merge r 和join_R语言中的数据合并函数(merge,cbind和rbind)的使用

    R语言中的数据合并函数(merge,cbind和rbind)的使用-R语言中用cbind() 和rbind() 构建分块矩阵 1.merge函数 两个数据框拥有相同的时间或观测值,但这些列却不尽相同. ...

  7. 【C 语言】文件操作 ( C 语言中的文件操作函数 | 磁盘与内存缓冲区 | 缓冲区工作机制 )

    文章目录 一.C 语言中的文件操作函数 二.磁盘与内存缓冲区 三.缓冲区工作机制 一.C 语言中的文件操作函数 读取 文本文件 可以使用 getc , fgets , fscanf 函数 , 向 文本 ...

  8. f2py支持在fortran语言中调用其他Fortran函数或C代码或Python代码

    f2py支持在fortran语言中调用其他Fortran函数或C代码或Python代码 分类: Python Numpy_Scipy fortran MinGW_GCC_Boost f2py 2012 ...

  9. 【示例】C语言中利用数组存放函数指针

    C语言中利用数组存放函数指针,增加函数使用的灵活性.使用时只需提供数组索引,即可调用不同函数. 预备知识: 1.指向函数的指针 一个函数在编译时被分配一个入口地址,这个地址就被称为函数的指针. 例如: ...

最新文章

  1. 2022-2028年中国电压力锅市场投资分析及前景预测报告
  2. ce修改器传奇刷元宝_真原始传奇刷元宝方法 不封号刷元宝技巧
  3. “大龄”码农的“中年危机”:35岁之后,该如何应对?
  4. 企业部署Linux应用将拥有更低的整体拥有成本
  5. leetcode算法题--有序数组中的单一元素
  6. 由浅入深,走进Python装饰器-----第五篇:进阶--类装饰类
  7. 验证字符串是否为汉字
  8. PAT1056 组合数的和 (15 分)
  9. JWT:我应该使用哪种签名算法?
  10. 行为类模式(二):命令(Command)
  11. Mac做深度学习开发【从无到有】
  12. “宽带中国、智慧岳阳”项目启动
  13. 关于MySQL 通用查询日志和慢查询日志分析
  14. lena-ts 图像处理和卷积操作
  15. SpringBoot集成DM数据库
  16. Python百度指数抓取 一键生成指数信息导出到txt文件,制作可视化动态图表
  17. 如何在DPDK盒子上使用TRex
  18. python大数据是什么_python和大数据有什么关系?
  19. python自动登录qq邮箱_python实现自动登录qq邮箱,写邮件并发送
  20. 关于FPN(特征金字塔网络)层间融合的理解

热门文章

  1. OSChina 周二乱弹 —— 富贵舔中求
  2. Power Designer:如何在输入name的时候,让code不跟着变
  3. Python自学书单!
  4. 台式电脑机箱怎么选?
  5. 穿越人海——化繁为简
  6. SQLSERVER 事务日志的 LSN 到底是什么?
  7. C语言求摩尔数,[蓝桥杯][算法提高VIP]摩尔斯电码 (C语言代码)
  8. Latex BiB参考文献中英文名-带特殊符号
  9. android加载h5页面加进度条,使用Android仿微信加载H5页面的进度条
  10. 高能来袭,海图sd3403开发板ss928海思hi3559替代方案