4-2 R语言函数 apply
#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的更多相关文章
- R语言函数化学习笔记6
R语言函数化学习笔记 1.apply函数 可以让list或者vector的元素依次执行一遍调用的函数,输出的结果是list格式 2.sapply函数 原理和list一样,但是输出的结果是一个向量的形式 ...
- R语言函数化学习笔记3
R语言函数化学习笔记3 R语言常用的一些命令函数 1.getwd()查看当前R的工作目录 2.setwd()修改当前工作目录 3.str()可以输出指定对象的结构(类型,位置等),同理还有class( ...
- R语言函数化编程笔记2
R语言函数化编程笔记2 我学过很多的编程语言,可以我写的代码很啰嗦,一定是我太懒了.或许是基础不牢地动山摇 1.为什么要学函数 函数可以简化编程语言,减少重复代码或者说面向对象的作用 2.函数 2.1 ...
- R语言函数化编程笔记1
R语言函数化编程笔记1 notes:有一个不错的网站叫做stack overflow,有问题可以从上面找或者搜索答案,会有大佬相助. 在github上面可以找到很多R的扩展包,如果自己额修改被接受,那 ...
- R语言函数总结(转)
R语言特征 对大小写敏感 通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母).不过,一个命名必须以 . 或者字母开头,并且如果以 . 开头,第二个字符不允许是数字. 基本命令要么是表达 ...
- r语言 函数
R语言实际上是函数的集合,用户可以使用base,stats等包中的基本函数,也可以自己编写函数完成一定的功能.但是初学者往往认为编写R函数十分困难,或者难以理解.这里对如何编写R函数进行简要的介绍. ...
- 【R笔记】R语言函数总结
R语言与数据挖掘:公式:数据:方法 R语言特征 对大小写敏感 通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母).不过,一个命名必须以 . 或者字母开头,并且如果以 . 开头,第二个字 ...
- 【转】R语言函数总结
原博: R语言与数据挖掘:公式:数据:方法 R语言特征 对大小写敏感 通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母).不过,一个命名必须以 . 或者字母开头,并且如果以 . 开头, ...
- R语言︱函数使用技巧(循环、if族/for、switch、repeat、ifelse、stopifnot)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 后续加更内容: 应用一:if族有哪些成员呢?- ...
随机推荐
- PHP 类与对象 全解析( 一)
目录 PHP 类与对象 全解析( 一) PHP 类与对象 全解析( 二) PHP 类与对象 全解析(三 ) 1.类与对象 对象:实际存在该类事物中每个实物的个体.$a =new User(); 实例化 ...
- 常见排序算法总结 -- java实现
常见排序算法总结 -- java实现 排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序. 线性时间 ...
- 使用tcmalloc替换系统的malloc
https://blog.csdn.net/educast/article/details/79166553?utm_source=blogxgwz0 今天对服务器进行压测,模拟的请求量到4万次/分的 ...
- 控制台直接执行sql语句
mysql -h127.0.0.1 -P3306 -uroot -paaccccccc databasename -e "select * from RegInfo where Plat ! ...
- Notepad++怎么使用正则替换
前言:工作中在oracle中写触发器的sql时,表字段有几十个,修改起来非常不方便,于是采用了Notepad++的替换 案例: 想把 v_update_time,v_create_time,v_rcv ...
- java设计模式-----18、职责链模式
概念: Chain of Responsibility(CoR)模式也叫职责链模式.责任链模式或者职责连锁模式,是行为模式之一,该模式构造一系列分别担当不同的职责的类的对象来共同完成一个任务,这些类的 ...
- confirm(message)
如果用户点击确定按钮,则 confirm() 返回 true.如果点击取消按钮,则 confirm() 返回 false. 在用户点击确定按钮或取消按钮把对话框关闭之前,它将阻止用户对浏览器的所有输入 ...
- Java向数据库中一次性插入大量数据
String sql = “insert into username.tablename(id) values(?)”; PreparedStatement stmt = conn.prepareSt ...
- 使用JSON实现分页
使用JSON实现分页可直接用 Fenye.html <!DOCTYPE html> <html> <head> <title>JSON分页</ti ...
- DW如何打开已经关闭的站点文件提示框
DW在已经新建成功站点后,若将站点文件提示框关闭后,如何重新打开呢?即如下图所示的提示框: 点击站点下拉菜单中的‘在站点定位’即可打开关闭的提示框.