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中已经分组排序好的前多少行的数据 这里通过一张表的示 ...
随机推荐
- WP8.1学习系列(第十章)——中心控件Hub设计指南
Windows Phone 应用商店应用中的中心控件指南 在本文中 说明 示例 用法指南 设计指南 相关主题 重要的 API Hub (XAML) HubSection (XAML) 说明 中心控 ...
- smali-2.2.4.jar & baksmali-2.2.4.jar
https://bitbucket.org/JesusFreke/smali/downloads/
- Oracle SQL Developer保持数据库连接的方法
一.概述 从navicat切到pl/sql developer,但是发现个bug,因为本地客户端pl/sql developer的字符集 和数据库服务器的字符集不一致,导致一个很奇葩的东西. 本来我有 ...
- Linux 下 SVN 命令操作详解
1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain ...
- ZOJ1363 Chocolate
Chocolate Time Limit: 2 Seconds Memory Limit: 65536 KB Special Judge In 2100, ACM chocolat ...
- PHP内置安全函数一览
内置安全函数 filter_var函数 根据参数中的过滤类型进行过滤,如过滤Email类型的,则符合的字符串返回字符串,不符合的返回False. urldecode函数 写这个函数是特别为了提醒注意, ...
- 把握这两点,抢占下一个电商风口|2016最新中国电商App排名&研究报告
序言 电商,是随着中国互联网经济的持续发展所成长起来的.淘宝.京东这些电商从交易额和影响力上看都位列中国最为成功.最具话题性的互联网企业之中.尽管近几年中国经济有所放缓,但中国消费市场的增长速度仍有望 ...
- 各浏览器Cookie大小、个数限制【转】
先插入一条广告,博主新开了一家淘宝店,经营自己纯手工做的发饰,新店开业,只为信誉!需要的亲们可以光顾一下!谢谢大家的支持!店名: 小鱼尼莫手工饰品店经营: 发饰.头花.发夹.耳环等(手工制作)网店: ...
- Java 8新增的Lambda表达式
一. 表达式入门 Lambda表达式支持将代码块作为方法参数,lambda表达式允许使用更简洁的代码来创建只有一个抽象方法的接口(这种接口被称为函数式接口)的实例,相当于一个匿名的方法. 1.1 La ...
- <input type=file>上传唯一控件
值得注意的是:当一个表单里面包含这个上传元素的时候,表单的enctype必须指定为multipart/form-data,method必须指定为post,浏览器才会认识并正确执行.但是还有一点,浏览器 ...