#apply函数,沿着数组的某一维度处理数据
#例如将函数用于矩阵的行或列
#与for/while循环的效率相似,但只用一句话可以完成
#apply(参数):apply(数组,维度,函数/函数名) > x <- matrix(1:16,4,4)
> x
[,1] [,2] [,3] [,4]
[1,] 1 5 9 13
[2,] 2 6 10 14
[3,] 3 7 11 15
[4,] 4 8 12 16 > apply(x,2,mean) #沿着x的第二维度求平均,x有两个维度,行和列,第二个维度就是沿着x的列求平均
[1] 2.5 6.5 10.5 14.5 > apply(x,2,sum) #沿着x的第二维度求和
[1] 10 26 42 58 > apply(x,1,sum)
[1] 28 32 36 40 > apply(x,1,mean)
[1] 7 8 9 10 > rowSums(x) #行的总和
[1] 28 32 36 40 > rowMeans(x) #行的平均值
[1] 7 8 9 10 > colSums(x) #列的总和
[1] 10 26 42 58 > colMeans(x) #列的平均值
[1] 2.5 6.5 10.5 14.5 > x <- matrix(rnorm(100),10,10) #随机从正态分布中取100个数据
> x
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] -0.6028508 1.4642242 0.04427663 0.2871729 0.04981660 -0.8558895 0.5130530
[2,] -1.9378240 0.2039535 -0.19909385 -0.4309858 0.85004373 0.4976094 -0.5580487
[3,] 1.2487024 0.3279828 -0.61134011 -0.1575374 -0.29225789 0.3887533 0.3905769
[4,] -2.5628573 0.4519969 -0.31849107 -1.4633238 0.46414326 0.3366307 -2.1061818
[5,] -0.2568173 -0.7387934 -0.65190045 -1.5211132 -0.68554516 0.3329140 -1.3744196
[6,] -0.3072326 -1.2575338 0.42412478 -1.3476506 -0.21221874 0.7673182 -0.4560506
[7,] 0.1561480 0.3020903 0.36489259 -0.2507313 1.35735729 -0.2610940 0.5355151
[8,] 0.6536334 0.3717443 -0.77679094 1.0801878 0.07262787 -0.5006976 -2.6058038
[9,] 1.4417755 -1.2989872 1.04908993 0.5010024 -0.41921218 2.2141514 0.3646026
[10,] -1.6978768 -0.9097784 0.01689380 0.6535433 1.55588778 0.4550700 2.5595517
[,8] [,9] [,10]
[1,] -0.57296509 0.1170718 -1.89788063
[2,] 0.06360181 1.3552013 0.83369280
[3,] -0.44550756 0.3857978 0.24664750
[4,] 0.51678695 0.2522804 -0.77862862
[5,] 0.35021885 -0.2767039 -0.37358325
[6,] -0.12660675 -1.4168734 0.86864076
[7,] 0.69927317 0.6202195 -2.31017158
[8,] 1.43228754 1.3257759 0.59362053
[9,] -1.63696656 0.3467712 0.72186091
[10,] -1.02416667 -1.7024939 0.03971799 #解释:
#x赋值函数中的2*3*4分别对应行*列*组(相对应的维度即为1*2*3
#apply(x,c(1,2),mean)中1,2对应的维度为行*列,不需要考虑组,所以对每组相同位置的所有元素相加后求平均,因此输出的结果为2行3列的矩阵
#同理,apply(x,c(1,3),mean)中1,3对应的维度为行*组,所以分别对每组中的行求平均,因此输出的结果为2行4列的矩阵(x中有4个组,每组中有2行)
#同理,(2,3)就代表列*组了~ > apply(x,1,quantile,probs=c(0.25,0.75)) #quantile求数据的百分位点,可通过probs=c()进行分配
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
25% -0.5953794 -0.3730128 -0.2585778 -1.2921500 -0.7254813 -1.0571630 -0.1490114
75% 0.2446476 0.7496719 0.3880144 0.4231553 -0.2617889 0.2864419 0.5990434
[,8] [,9] [,10]
25% -0.3573663 -0.2277163 -0.9955696
75% 0.9735492 0.9672827 0.6039250 > x <- array(rnorm(2*3*4),c(2,3,4))#表示随机从正太分布中抽取出来的24个数据,按照三维排列出来。
> x
, , 1 [,1] [,2] [,3]
[1,] -0.6055074 0.1428984 -0.9020732
[2,] -0.6947868 1.3597884 0.8797562 , , 2 [,1] [,2] [,3]
[1,] -0.3114873 -2.3184400 0.4499677
[2,] 0.1497819 0.1295499 -1.6927436 , , 3 [,1] [,2] [,3]
[1,] 0.9606359 1.3313254 -0.60785734
[2,] 0.7255531 -0.1389708 -0.02877733 , , 4 [,1] [,2] [,3]
[1,] 0.0279858 0.9007448 0.1251860
[2,] 0.5111250 -0.4223850 -0.6083399 > apply(x,c(1,2),mean) #以第1及第2维为基础,沿第3方向压成平面
[,1] [,2] [,3]
[1,] 0.01790675 0.01413214 -0.2336942
[2,] 0.17291831 0.23199563 -0.3625262 > apply(x,c(1,3),mean)
[,1] [,2] [,3] [,4]
[1,] -0.4548941 -0.7266532 0.561368 0.3513056
[2,] 0.5149192 -0.4711373 0.185935 -0.1732000 > apply(x,c(2,3),mean)
[,1] [,2] [,3] [,4]
[1,] -0.6501471 -0.08085267 0.8430945 0.2695554
[2,] 0.7513434 -1.09444509 0.5961773 0.2391799
[3,] -0.0111585 -0.62138791 -0.3183173 -0.2415770

4-2 R语言函数 apply的更多相关文章

  1. R语言函数化学习笔记6

    R语言函数化学习笔记 1.apply函数 可以让list或者vector的元素依次执行一遍调用的函数,输出的结果是list格式 2.sapply函数 原理和list一样,但是输出的结果是一个向量的形式 ...

  2. R语言函数化学习笔记3

    R语言函数化学习笔记3 R语言常用的一些命令函数 1.getwd()查看当前R的工作目录 2.setwd()修改当前工作目录 3.str()可以输出指定对象的结构(类型,位置等),同理还有class( ...

  3. R语言函数化编程笔记2

    R语言函数化编程笔记2 我学过很多的编程语言,可以我写的代码很啰嗦,一定是我太懒了.或许是基础不牢地动山摇 1.为什么要学函数 函数可以简化编程语言,减少重复代码或者说面向对象的作用 2.函数 2.1 ...

  4. R语言函数化编程笔记1

    R语言函数化编程笔记1 notes:有一个不错的网站叫做stack overflow,有问题可以从上面找或者搜索答案,会有大佬相助. 在github上面可以找到很多R的扩展包,如果自己额修改被接受,那 ...

  5. R语言函数总结(转)

    R语言特征 对大小写敏感 通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母).不过,一个命名必须以 . 或者字母开头,并且如果以 . 开头,第二个字符不允许是数字. 基本命令要么是表达 ...

  6. r语言 函数

    R语言实际上是函数的集合,用户可以使用base,stats等包中的基本函数,也可以自己编写函数完成一定的功能.但是初学者往往认为编写R函数十分困难,或者难以理解.这里对如何编写R函数进行简要的介绍. ...

  7. 【R笔记】R语言函数总结

    R语言与数据挖掘:公式:数据:方法 R语言特征 对大小写敏感 通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母).不过,一个命名必须以 . 或者字母开头,并且如果以 . 开头,第二个字 ...

  8. 【转】R语言函数总结

    原博: R语言与数据挖掘:公式:数据:方法 R语言特征 对大小写敏感 通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母).不过,一个命名必须以 . 或者字母开头,并且如果以 . 开头, ...

  9. R语言︱函数使用技巧(循环、if族/for、switch、repeat、ifelse、stopifnot)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 后续加更内容: 应用一:if族有哪些成员呢?- ...

随机推荐

  1. SpringBoot数据库访问(一)--------关系型数据库访问(RDBMS)

    关系型数据库访问(RDBMS) 采用JdbcTemplate.MyBatis.JPA.Hibernate等技术. 一.JdbcTemplate工具 在pom.xml添加boot-starter-jdb ...

  2. [javaSE] 数组(排序-选择排序)

    两层嵌套循环,外层循环控制次数,内层循环进行比较 for(int x=0;x<arr.length;x++){ for(int y=0;y<arr.length;y++){ if(arr[ ...

  3. SSM+Redis+Shiro+Maven框架搭建及集成应用

    引文: 本文主要讲述项目框架搭建时的一些简单的使用配置,教你如何快速进行项目框架搭建. 技术: Spring+SpringMVC+Mybatis+Redis+Shiro+Maven          ...

  4. Django(四):model

    一.创建model django.db.models是django自带的创建数据库的ORM. 在models.py中以继承models.Model创建表后,需要在setttngs中确保添加了当前应用, ...

  5. 理解 RESTful 架构(转)

    前言:REST指的是一组架构约束条件和原则." 如果一个架构符合REST的约束条件和原则,我们就称它为RESTful架构. 越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种& ...

  6. 【 js 片段 】点击空白或者页面其他地方,关闭弹框

    $(document).mouseup(function(e){ var _con = $(' 目标区域 '); // 设置目标区域 if(!_con.is(e.target) && ...

  7. 容易忽略的小知识之 Date 函数参数

    Date 对象启用基本存储器并取得日期和时间. dateObj = new Date()dateObj = new Date(dateVal)dateObj = new Date(year, mont ...

  8. CentOS7系列--1.2CentOS7基本设置

    CentOS7基本设置 1. 查看相关信息 1.1. 查看系统信息 1.1.1. 查看系统位数 方法1: [root@centos7 ~]# uname -a Linux centos7.smartm ...

  9. cnpm 淘宝镜像设置

    很简单,一句话 npm install -g cnpm --registry=https://registry.npm.taobao.org

  10. Storm监控文件夹变化 统计文件单词数量

    监控指定文件夹,读取文件(新文件动态读取)里的内容,统计单词的数量. FileSpout.java,监控文件夹,读取新文件内容 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...