当前位置:首页 > 教育

map函数 函数式编程:数据整理purrr包!

01包装:purrr包装

今天我从哈雷中学到了一个新概念

函数式编程:将一个函数作为参数传递给另一个函数。使代码相当简洁,避免for循环,提高运行速度。

虽然听起来有点傻,但是我遇到过。比如apply函数,apply(iris[,-5],2,mean),把mean函数作为参数传递给apply函数,得到iris数据集和前四个变量的均值。

purrr包中有一个类似的映射函数,但是映射关系可能更复杂。

本文主要了解以下功能:

map():输出列表map_dbl():输出双精度型向量map2()、pmap():多参数映射,输出列表invoke_map():不同函数调用,输出列表

02 map()函数

Map语法:map(。x,。f,...),类似于apply

。x:数据集,。f映射函数

# # #例如,求虹膜数据集中数值变量的平均值

map(iris[,-5],均值)

$Sepal。长度

[ 1] 5.843333

$Sepal。宽度

[ 1] 3.057333

$花瓣。长度

[ 1] 3.758

$花瓣。宽度

[ 1] 1.199333

返回的是列表类型,通常可以通过非列表函数转换成向量

未列表(map(iris[,-5],均值))

萼片。萼片长度。宽度花瓣。长度花瓣。宽度

5.8433333.0573333.7580001.199333

通过以下两种方式可以达到相同的效果

应用(iris[,-5],2,均值)

summary _ all(iris[,-5],均值)

###PS:假设是宽表性质的列表,计算数值变量的平均值

# # #您可以自定义函数来过滤数值变量的列

pre_is_double <。-函数(x){ #确定函数并返回真| |假

output1 <。-空

for(i in seq_along(x)){

输出<。- is.double(x[,i])

output1 <。- c(输出1,输出)

}

返回(输出1)

}

未列表(map(iris[,pre_is_double(iris)],均值))

该”。映射函数支持多种形式

# # # the "。映射函数中的“f”函数支持匿名函数

iris[,-5] % >%

map(函数(x) (max(x) - min(x)))

获取每个变量的极值

该”。## #map函数中的“f”函数也支持模型拟合

# # #需要注意的是,在数据帧传输的过程中,很容易出现“降维”的情况,所以最好转换成列表,然后传递给. f。

model = map( list(iris),~lm(Sepal。长度~萼片。宽度,数据=虹膜))

# # #拆分功能,可以根据某个变量拆分列表。

# # #特别适合一个变量,分类后可以处理

iris %>。%

拆分(。$ Species)% & gt;%

#对于物种,将鸢尾分为三个列表

map(~lm(Sepal。长度~萼片。宽度,数据=。))% & gt%

# "数据= ","."在分割后的列表中

地图(摘要)% >;%

map_dbl( "r.squared ")

弗吉尼亚濑鱼

0.55137560.27658210.2090573

# "r.squared ",你可以通过变量名得到r^ 2

Map_dbl()语法:map_dbl()。x,。f,...)

Map_lg(),map_int()和map_chr()类似

# map_dbl函数

1: 10%>;%

map(r ORM,n = 10) % >%

map_dbl(平均值)

[ 1] 1.0522141.5114642.9902594.2380925.4746515.8944976.7990277.8414979.121959

[ 10] 10.465799

#根据rnorm随机生成一个平均值为1:10的列表,然后计算平均值

Map2(),pmap():多参数映射

语法:map2(。x,。y。f,...),pmap(。l,。f,...)

例如,有时需要生成具有特定均值和方差的随机数

# # #假设函数中有多个参数变量

示例:rnorm函数

语法:rnorm(n,mean = 0,sd = 1) #有三个变量:n,mean,sd

参数表:

x <。-列表(1,10,100)

y <。-列表(1,2,3)

z <。-列表(5,5,5)

#表单效果通过以下三种方式实现

1.地图模式

set.seed( 123)

1: 3%>;%

map(~ r ORM(z[[。]],x [[。]],y [[。]]))

# "[[.]]”会降低函数的可读性

2.map2模式

set.seed( 123)

map2(x,y,rnorm,n = 5)

3.PMAP模式

set.seed( 123)

pmap(列表(z,x,y),rnorm)

在#pmap函数中,输入参数变量必须集成到一个列表中

#假设要生成的列表长度不一致(z可以是多个值),方法1和方法3更合适

Invoke_map():不同的函数调用,输出列表

语法:invoke _ map(。f,。x = list (null),...,.env = null)

# # #同时生成runif和rnrom的随机列表

invoke_map(list(runif,rnorm),list(list( min= 1,max= 5,n= 5),list(mean = 0,sd = 1,n= 10)))

[[1]]

[ 1] 2.9544524.8178952.9316104.5614014.657753

[[2]]

[ 1] 0.2760235-1.0489755-0.52086931.6232025-1.07006821.6858872-0.2416898-0.4682005

[ 9] -0.77297822.1499193

#list( min= 1,max= 5,n= 5)是runif的参数

#list(mean = 0,sd = 1,n= 10)是rnorm的参数

总结:purr能实现的功能循环也有,但是purr的代码更简洁&漂亮,函数式编程是一大特色。

本文省略了purrr的许多功能,如安全、减速、行走、保持等。

结束。

Python和SQL技能失败?零基础也要就业数据分析?

零基础就业数据分析,跨专业变动数据分析,也可以!

“零基础就业数据分析——就业类”即将启动

点击试听→“零基础就业数据分析-就业类”试听类

1.《map函数 函数式编程:数据整理purrr包!》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《map函数 函数式编程:数据整理purrr包!》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/jiaoyu/1056530.html

上一篇

女星大闹高铁站 事情经过真相揭秘!

下一篇

长城回应光头警长 过程真相详细揭秘!

8a源码 源码指标:RSI买点信号 没有未来函数 趋势金叉与死叉 通达信幅图

  • 8a源码 源码指标:RSI买点信号 没有未来函数 趋势金叉与死叉 通达信幅图
  • 8a源码 源码指标:RSI买点信号 没有未来函数 趋势金叉与死叉 通达信幅图
  • 8a源码 源码指标:RSI买点信号 没有未来函数 趋势金叉与死叉 通达信幅图
大连期货 大连金融服务产业园期货数据中心奠基

大连期货 大连金融服务产业园期货数据中心奠基

4月12日上午11时,大连市委常委、新区区委书记李鹏宇,大连市人民政府副市长金国伟,大商学院党委书记李正强,总经理王凤海,见证了金浦新区大连金融服务产业园期货数据中心的奠基仪式。大连金融服务产业园期货数据中心将包括大连商品交易所同城数据中心和中国金融期货交易所远程容灾中心。 市长金国伟表示,...

excel公式编辑器 Excel函数大全完整版【实例讲解】

(a)函数和公式 1.什么是函数 “Excel函数是预定义的特殊公式,执行计算、分析等数据处理任务。以常用的求和函数SUM为例。它的语法是 SUM(数字1,数字2).其中,“SUM”被称为函数名,一个函数只有一个名字,这就决定了函数的作用和用途。 函数名后面跟一个左括号,后面跟逗号分隔的称为...

国家idc数据中心 国家数据中心相关政策汇总

随着以互联网、云计算和大数据为代表的信息经济的快速发展,数据中心已经成为信息社会的重要基础设施,迎来了一个快速发展的时期,国内外都在布局和发展数据中心。中国在数据中心的布局和建设方面不遗余力,在标准、规划和鼓励支持措施等方面提出了相关政策。 2012年11月,工业和信息化部发布《关于进一步规...

李维斯加盟 李维斯二度上市,市值高达87亿美元,从数据分析这个166年历史的品牌发展

  • 李维斯加盟 李维斯二度上市,市值高达87亿美元,从数据分析这个166年历史的品牌发展
  • 李维斯加盟 李维斯二度上市,市值高达87亿美元,从数据分析这个166年历史的品牌发展
  • 李维斯加盟 李维斯二度上市,市值高达87亿美元,从数据分析这个166年历史的品牌发展

黄一刀有毒 “六点半”、“黄一刀有毒”等相继夺冠微信公众号行业排行榜 | 西瓜数据

  • 黄一刀有毒 “六点半”、“黄一刀有毒”等相继夺冠微信公众号行业排行榜 | 西瓜数据
  • 黄一刀有毒 “六点半”、“黄一刀有毒”等相继夺冠微信公众号行业排行榜 | 西瓜数据
  • 黄一刀有毒 “六点半”、“黄一刀有毒”等相继夺冠微信公众号行业排行榜 | 西瓜数据
用DNA存储数据 建立一个以DNA为基础操作存储系统

用DNA存储数据 建立一个以DNA为基础操作存储系统

2008年5月24日,我们用DNA存储数据,建立了一个基于DNA的操作存储系统。用DNA存储数据是个疯狂的想法。微软研究院的计算机架构师表示,公司已经正式设定了一个目标,即在2020年之前在数据中心建立一个基于DNA的操...

微软用DNA存储数据 期望在未来能达到每秒100MB

5月24日,据外媒报道,微软去年开始研究使用DNA存储数据,现在微软已经计划在2020年建立基于NDA的数据存储系统,但NDA数据存储的成本和速度仍然是该计划顺利进行的障碍。 去年春天,微软开始与华盛顿大学的研究人员一起研...