前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R海拾遗-apply家族学习

R海拾遗-apply家族学习

作者头像
火星娃统计
发布2020-09-15 12:24:35
7760
发布2020-09-15 12:24:35
举报
文章被收录于专栏:火星娃统计火星娃统计

apply家族学习

概述

在实际的工作中,我们总要面对各种各样的数据结构处理,这些操作可以使用循环来完成,但是容易造成内存的占用,以前其实了解过这方面的函数,但是记不清,因此整理下 主要函数如下

  • apply
  • lapply
  • sapply
  • tapply

apply函数

代码语言:javascript
复制
apply(X, MARGIN, FUN, ...)
  • X 处理的数据框
  • MARGIN 1表示对行,2表示对列处理,c(1,2)表示对行列进行操作
  • FUN 函数,可以为自定义函数,或者为内置函数

示例

代码语言:javascript
复制
# 使用iris数据集进行测试
data(iris)
# 求均值
apply(iris[,1:4],2,mean,na.rm=T)
# 结果
Sepal.Length  Sepal.Width Petal.Length  Petal.Width
    5.843333     3.057333     3.758000     1.199333

lapply函数

lapply函数和apply函数的差别在于,lapply输出的为一个列表 参数方面少了margin

示例

代码语言:javascript
复制
x<-lapply(iris[,1:4],mean,na.rm=T)
# 因为输出的为list格式,因此一般情况下需要使用unlist函数进行分解
unlist(x)

sapply函数

Sapply函数返回的是一个向量,不过增加了两个参数

  • simplify 如果为T,将输出结果数组化,否则为list
  • use.NAMEs 如果为T,设置字符串为字符名

示例

代码语言:javascript
复制
sapply(iris[,1:4],mean,na.rm=T,simplify=F,use.NAMEs=F)
# 结果
$Sepal.Length
[1] 5.843333

$Sepal.Width
[1] 3.057333

$Petal.Length
[1] 3.758

$Petal.Width
[1] 1.199333

tapply函数

tapply函数一般对数据进行分组描述时使用

代码语言:javascript
复制
tapply(X, INDEX, FUN = NULL)
参数
-X: 一个对象,一般都是向量
-INDEX: 一个包含分类因子的列表
-FUN: 对X里面每个元素进行操作的函数

示例

代码语言:javascript
复制
data(iris)
# 对第一列进行分组求均值
tapply(iris[,1],iris$Species,mean)
# 结果
    setosa versicolor  virginica
     5.006      5.936      6.588

结束语

其实关于apply函数的家族还有很多,这里只是了解了其中几个,其他的内容用到的概率不是很高。 peace & love

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 火星娃统计 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • apply家族学习
    • 概述
      • apply函数
        • lapply函数
          • sapply函数
            • tapply函数
              • 结束语
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档