R中apply等函数用法[转载]
转自:https://www.cnblogs.com/nanhao/p/6674063.html
1.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函数经常用来计算矩阵中行或列的均值、和值的函数。
rname = c("one","two","three")
cname = c("first","second")
b <- matrix(:,nrow=, dimnames = list(rname, cname))
b为:
first second
one
two
three
使用以上为数据举例。
apply(b,,sum) 结果:
one two three
这里有几个元素它的输出结果就会有几列。
比如对这个sum,对于行进行求和,那么有3行就有3个结果元素。
上面的指令代表对矩阵b进行行计算,分别对每一行进行求和。函数涉及了三个参数:
第一个参数是指要参与计算的矩阵;
第二个参数是指按行计算还是按列计算,1——表示按行计算,2——按列计算;
第三个参数是指具体的运算函数。
第四个参数是fargs是f的可选参数集。
> z <- matrix(:, nrow = )
> f <- function(x) {
+ x/c(, )
+ }
> apply(z,,f) #f得到3个元素,每个元素(组件)里有两个值,所以是3列,竖着来看
[,] [,] [,]
[,] 0.5 1.000 1.50
[,] 0.5 0.625 0.75
//这个例子还挺好的,最终的结果返回的是一个矩阵。那么apply输出是向量或者矩阵。
2.lapply函数——list
lapply()(代表list apply)与矩阵的apply()函数的用法类似, 对列表的每个组件执行给定的函数,并返回另一个列表。
> x <- list(a = :, beta = exp(-:), logic = c(TRUE,FALSE,FALSE,TRUE))
> lapply(x, mean)
$a
[] 5.5 $beta
[] 4.535125 $logic
[] 0.5
//这里的exp是e的多少次方。
3.sapply()——simplified lapply
sapply()(代表simplified [l]apply)可以将结果整理以向量,矩阵,列表 的形式输出。
> sapply(x, mean)
a beta logic
5.500000 4.535125 0.500000
> sapply(x, quantile) #每一个对应组件输出5个元素,所以为5行,像矩阵一样,竖着来的。
a beta logic
% 1.00 0.04978707 0.0
% 3.25 0.25160736 0.0
% 5.50 1.00000000 0.5
% 7.75 5.05366896 1.0
% 10.00 20.08553692 1.0
> sapply(:, seq)
[[]]
[] [[]]
[] [[]]
[]
//quantile是分位数的意思。默认是计算这5个分位数。
4.tapply
tapply(x,f,g)需要向量 x (x不可以是数据框),因子或因子列表 f 以及函数 g 。
tapply()执行的操作是:暂时将x分组,每组对应一个因子水平(f),得到x的子向量,然后这些子向量应用函数 g.
> a <- c(,,,)
> b <- c('q', 'w', 'q','w')
> tapply(a, b, mean)
q w
先按照b分组,然后应用了mean函数。
5.mapply
> l1 <- list(a = c(:), b = c(:))
> l2 <- list(c = c(:), d = c(:))
> mapply(sum, l1$a, l1$b, l2$c, l2$d)
[]
> l1 <- list(a = c(:), b = c(:))
> l2 <- list(c = c(:), d = c(:))
> mapply(sum, l1$a)
[]
> l1 <- list(a = c(:), b = c(:))
> l2 <- list(c = c(:), d = c(:))
> mapply(sum, l1$a,l1$b)
[]
//根据这个就能比较好的看出来它的作用,先对第一个参数应用sum,再对第二个参数sum,
比如对于sum求和:第一个参数就是本参数,另一个参数就是上一次计算的结果。
多参数版本的sapply()。第一次计算传入各组向量的第一个元素到FUN,进行结算得到结果; 第二次传入各组向量的第二个元素,得到结果;第三次传入各组向量的第三个元素…以此类推。
R中apply等函数用法[转载]的更多相关文章
- delphi中Application.MessageBox函数用法详解
delphi中Application.MessageBox函数用法详解 Application.MessageBox是TApplication的成员函数,声明如下:functionTApplicati ...
- R中的sample函数
今天介绍一些运算函数,它们的使用很简单,没有什么难度,但是也会用的着. 在医学统计学或者流行病学里的现场调查.样本选择经常会提到一个词:随机抽样.随机抽样是为了保证各比较组之间均衡性的一个很重要的方法 ...
- R中的par()函数的参数
把R中par()函数的主要参数整理了一下(另外本来还整理了每个参数的帮助文档中文解释,但是太长,就分类之后,整理为图表,excel不便放上来,就放了这些表的截图)
- R语言do.call 函数用法详解
虽然R语言有类型很丰富的数据结构,但是很多时候数据结构比较复杂,那么基本就会用到list这种结构的数据类型.但是list对象很难以文本的形式导出,因此需要一个函数能快速将复杂的list结构扁平化成da ...
- C++中string常用函数用法总结
string(s小写)是C++标准库中的类,纯C中没有,使用时需要包含头文件#include<string>,注意不是<string.h>,下面记录一下string中比较常用的 ...
- js中apply,call的用法
最近一直在用 js 写游戏服务器,我也接触 js 时间不长,大学的时候用 js 做过一个 H3C 的 web的项目,然后在腾讯实习的时候用 js 写过一些奇怪的程序,自己也用 js 写过几个的网站.但 ...
- R中apply函数族
参考于:http://blog.fens.me/r-apply/ 1. apply的家族函数 2. apply函数 apply函数是最常用的代替for循环的函数.apply函数可以对矩阵.数据框.数组 ...
- 你真的懂了R中的stem函数是如何绘制茎叶图的么?
本文原创,转载请注明出处,本人Q1273314690(交流学习) 哭晕 你真的学会了stem()函数了吗? stem()函数的使用方法是: stem(x, scale=1,width=80, at ...
- oracle中分组排序函数用法 - 转
项目开发中,我们有时会碰到需要分组排序来解决问题的情况,如:1.要求取出按field1分组后,并在每组中按照field2排序:2.亦或更加要求取出1中已经分组排序好的前多少行的数据 这里通过一张表的示 ...
随机推荐
- 【.netcore基础】MVC制器Controller依赖注入
废话少说,直接上代码 首先我们得有一个接口类和一个实现类,方便后面注入MVC里 接口类 public interface IWeatherProvider { List<WeatherForec ...
- 【框架学习】Nancy 框架
Nancy 框架 http://liulixiang1988.github.io/nancy-webkuang-jia.html .是一个轻量级用于构建http相应的web框架: .与mvc类似,有自 ...
- 如何修改 Ubuntu 的字符集?
步骤: 1.编辑 local 文件 输入: vi /var/lib/locales/supported.d/local 将 zh_CN.GB2312 加入到后面,保存. 2.执行:locale-gen ...
- 如何验证 Email 地址:SMTP 协议入门教程
http://www.ruanyifeng.com/blog/2017/06/smtp-protocol.html 作者: 阮一峰 日期: 2017年6月25日 Email 是最常用的用户识别手段 ...
- stdarg.h头文件源代码分析
谈到C语言中可变参数函数的实现(参见C语言中可变参数函数实现原理),有一个头文件不得不谈,那就是stdarg.h 本文从minix源码中的stdarg.h头文件入手进行分析: #ifndef _STD ...
- 【咸鱼教程】TextureMerger1.6.6 三:Bitmap Font的制作和使用
BitmapFont主要用于特殊字体在游戏中的使用 目录 一 方法1:添加字符 适合一张一张的零碎图片来制作位图字体 二 方法2:系统字体 适合使用已安装的系统字体来制作位图字 ...
- 关于windows 7系统下开启休眠功能的方法
今天笔者新装了一个windows 7操作系统,装完后,点击开始按钮.鼠标放到关机处的左边扩展选项时,没有发现休眠选项. 于是开始上网查询解决方法,并将过程记录如下: 首先简单的介绍一下休眠功能:休眠( ...
- HP P2xxx/MSA SMI-S Provider
HP P2xxx/MSA SMI-S Provider The HP MSA provider must be enabled before it can be monitored. For more ...
- Java秒杀简单设计二:数据库表和Dao层设计
Java秒杀简单设计二:数据库表Dao层设计 上一篇中搭建springboot项目环境和设计数据库表 https://www.cnblogs.com/taiguyiba/p/9791431.html ...
- 消息通讯之关于消息队列MQ必须了解的相关概念
目录 系统通讯方式有哪些? 消息队列的应用场景 消息队列通讯模型 常见的消息协议 AMQP MQTT ATOMP JMS 小结 系统通讯方式有哪些? RPC调用 RPC 全称 Remote Proce ...