R语言apply()函数用法
在R语言的帮助文档里,apply函数的功能是:
Retruns a vector or array or list of values obtained by applying a function to margins of an array or matrix.
就是说apply把一个function作用到array或者matrix的margins(可以理解为数组的每一行或者每一列)中,返回值时vector、array、list。
简单的说,apply函数经常用来计算矩阵中行或列的均值、和值的函数,具体方法如下:
定义一个3×2的矩阵:
rname = c("one","two","three")
cname = c("first","second")
b <- matrix(:,nrow=, dimnames = list(rname, cname))
b为:
first second
one 1 4
two 2 5
three 3 6
继续举几个例子:
apply(b,,sum)
上面的指令代表对矩阵b进行行计算,分别对每一行进行求和。函数涉及了三个参数:
第一个参数是指要参与计算的矩阵;
第二个参数是指按行计算还是按列计算,1——表示按行计算,2——按列计算;
第三个参数是指具体的运算参数。
上述指令的返回结果为:
one two three
5 7 9
值得注意的是,apply函数时可以针对数组进行计算你的,就是说数组未必是2维的!!
举一个3维的情况:
首先顶一个三维数组:
x=array(:,c(,,))
三维数组为:
, , 1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
, , 2
[,1] [,2] [,3]
[1,] 7 9 11
[2,] 8 10 12
, , 3
[,1] [,2] [,3]
[1,] 13 15 17
[2,] 14 16 18
, , 4
[,1] [,2] [,3]
[1,] 19 21 23
[2,] 20 22 24
使用如下指令:
apply(x,,sum)
则对1到23的所有奇数进行求和,结果为:
[1] 144 156
同样,第二个参数改成2后,
apply(x,,sum)
结果为:
[1] 84 100 116
是按照第二个维度进行的求和计算。
第二个参数改成3后,
apply(x,3,sum)
结果为:
[1] 21 57 93 129
即对第三个维度进行求和计算。
对于apply()函数的第三个参数,制定了具体用什么函数进行计算,之前例子里使用的都是sum,对于用户自定义的函数同样可以在这里使用。还用前面的矩阵b来举例。
定义了一个求平方和的函数:
myfun <- function(x){
sum(x^)
}
如果选择按行计算平方和,可使用如下指令:
apply(b,,myfun)
计算结果为:
one two three
17 29 45
通常情况大家使用apply之后是需要把apply的返回值作为输入在其他代码中使用的,这里尤其重要的一点是apply的返回值的维度。上面的例子就算每一行或者每一列的sum,使用apply之后,返回都是一个向量,并不会因为apply计算行(列)的sum就会自动返回一个列(行)向量。
R语言apply()函数用法的更多相关文章
- R语言 subset()函数用法
subset() 函数: subset(dataset , subset , select ) dataset 是 要进行操作的数据集 subset 是对数据的某些字段进行操作 select 选取要显 ...
- R语言seq()函数用法
1.seq() 用来生成一组数字的函数. Usage: ## Default S3 method:seq(from = 1, to = 1, by = ((to - from)/(length.out ...
- 【R】R语言常用函数
R语言常用函数 基本 一.数据管理vector:向量 numeric:数值型向量 logical:逻辑型向量character:字符型向量 list:列表 data.frame:数据框c:连接为向量或 ...
- R语言封装函数
R语言封装函数 原帖见豆瓣:https://www.douban.com/note/279077707/ 一个完整的R函数,需要包括函数名称,函数声明,函数参数以及函数体几部分. 1. 函数名称,即要 ...
- 博文推荐】Javascript中bind、call、apply函数用法
[博文推荐]Javascript中bind.call.apply函数用法 2015-03-02 09:22 菜鸟浮出水 51CTO博客 字号:T | T 最近一直在用 js 写游戏服务器,我也接触 j ...
- linux c语言 select函数用法
linux c语言 select函数用法 表头文件 #i nclude<sys/time.h> #i nclude<sys/types.h> #i nclude<unis ...
- R语言table()函数
R语言table()函数比较有用,两个示例尤其是混淆矩阵这个案例比较有用: 例子一:统计频次 z<-c(1,2,2,4,2,7,1,1);z1<-table(z);summary(z1); ...
- R语言基本操作函数---变量的基本操作
1.变量变换 as.array(x),as.data.frame(x),as.numeric(x),as.logical(x),as.complex(x),as.character(x) ...
- R语言—使用函数sample进行抽样
在医学统计学或者流行病学里的现场调查.样本选择经常会提到一个词:随机抽样.随机抽样是为了保证各比较组之间均衡性的一个很重要的方法.那么今天介绍的第一个函数就是用于抽样的函数sample: > ...
随机推荐
- IIS 使用多个https和通配证书解决方案
环境:OS :WINDOWS 2008 IIS: IIS7 域名:三个二级域名 问题:由于一个网站只支持一个443,但可以通过更改配置得到绑定不同域名.但由于公用证书,所以问题出来.只能为一个二级域名 ...
- Notepad++下载需要的插件(如何在Notepad++中手动下载需要的插件)
需求说明: 下载在实际工作中需要的Notepad++插件,或者是因为Notepadd++设置的原因导致不能直接在软件中显示插件. 即手动登录到指定的链接中进行插件的下载. 操作过程: 1.以xmlto ...
- sublime常用插件及配置
以下是我的sublime插件列表: SideBarEnhancements增强版侧边栏 这个插件官方不支持通过package安装了,只能手动了,下载地址https://github.com/S ...
- python2.0_s12_day10_rabbitMQ使用介绍
RabbitMQ RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(M ...
- 常用hive的CLI命令
1.show tables --查看所有表 2.desc tabname --查看表信息 3.dfs -ls 目录 查看hdfs上面的文件 dfs -lsr /user 递归显示目录/user ...
- 查看内存使用情况:free
free命令用于显示内存的使用情况,常见用法如下: [root@localhost ~]$ free # 以KB为单位显示内存使用情况 [root@localhost ~]$ free -m # 以M ...
- Linux下gcc编译生成动态链接库*.so文件并调用它(注:执行Test程序后无需用export 命令指定.so库文件路径:方法在文中下方;)
动态库*.so在linux下用c和c++编程时经常会碰到,最近在网站找了几篇文章介绍动态库的编译和链接,总算搞懂了这个之前一直不太了解得东东,这里做个笔记,也为其它正为动态库链接库而苦恼的兄弟们提供一 ...
- 【IOS6.0 自学瞎折腾】(四)Xib可视化编程
其实在Interface Builder中,要把xib中的控件与代码联系起来用鼠标拖拉连线是非常方便的一件事,有的教程写的非常复杂要先点这后点那的. 一:IBOutlet,IB说明是Interface ...
- 【python系列】python2.x和python3.x的区别
刚接触python使用的是python2.x的书籍,但是发现python3.x和python2.x有不小的区别,以下做一些记录 性能 Py3.0运行 pystone benchmark的速度比Py2. ...
- JavaWeb温习之HttpServletResponse对象
以下内容均根据"方立勋JavaWeb视频教程"进行总结 1. HttpServletResponse常见应用——设置响应头控制浏览器的行为 1.1 设置http响应头控制浏览器禁止 ...