#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. javascript Function类型

    Function(函数)类型实际上是对象,每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法,由于函数是对象,因此函数名实际上也是一个指向函数对象的指针 声明方式 func ...

  2. JavaScript学习笔记系列1:JavaScript的是什么?

    一.JS是什么? JavaScript作为Netscape Navigator浏览器的一部分首次出现在1996年.它最初的设计目标是改善网页的用户体验. 作者:Brendan Eich 期初JavaS ...

  3. commons-fileupload-1.4使用及问题

    文件上传 使用commons-fileupload-1.4控件及依赖的commons-io-2.6控件 jsp页面中内容 <form action="../servlet/FileUp ...

  4. python 中迭代和遍历的区别

    什么是迭代? 迭代就是重复运行一段代码语句块的能力.分为两种方式 使用递归函数 使用循环(for 或 while 循环) 假设有个需求,要按照降序打印10以下(包括10),0 以上的整数,用递归和循环 ...

  5. TextView显示HTML文本时<IMG>标签指定图片的显示处理

    TextView显示文本时是支持一些HTML标签的(具体支持那些标签会在下面附录列出),不会需要先用HTML的static方法fromHtml来转换一下. Spanned text = Html.fr ...

  6. Maven 项目管理从未如此通畅

    一,写在前面 Maven到底是什么?它能做些什么?能为我们的开发工作提供什么样的帮助?为什么会有如此大的知名度?另外,常听大厂的人说“私服”,工具管理吧啦吧啦的一堆也是不明觉厉.相信仁者见仁,着智者见 ...

  7. whistle替代Fiddler调试远程服务器代码使用教程

    前沿 之前在window下开发的同学大部分都是使用Fiddler代理工具做远程调试,自从换了Mac后也想找个代替工具调试,查询了下大概都比较推荐两款:Charles 和 Whistle .不过Char ...

  8. python之函数的参数

    1.位置参数: 例如计算一个整数的平方: def power(x) return x * x 显然参数x就是一个位置参数,如果要是计算5*5*5..............*5 ,这个函数就太麻烦了, ...

  9. FineReport中JS如何自定义按钮导出

    FineReport支持多种不同的导出方式,直接使用FineReport内置导出按钮可以非常快捷方便的来对各种格式的输出,但是我们在web页面集成中的时候,往往只想将报表内容嵌入到iframe中,而工 ...

  10. 对layoutInflater的理解

    参考该博客:http://www.cnblogs.com/top5/archive/2012/05/04/2482328.html LayoutInflater是一个抽象类,通过调用其实例方法infl ...