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中已经分组排序好的前多少行的数据 这里通过一张表的示 ...
随机推荐
- Win8应用开发 入门篇(三) UX交互导航模式
导航模式(Windows 应用商店应用) 在本文中 分层模式 画布上导航 顶部应用栏 语义式缩放 相关主题 组织 Windows 应用商店应用中的内容,以便用户可以轻松而直观地进行导航.使用正确的 ...
- m个苹果放入n个篮子
题目 :X个相同的苹果放入Y个篮子,(1)篮子可以为空 ,篮子不同. 放法有C(X+Y-1,Y-1 );// (2)篮子不可以为空,篮子不同.放法有C(X-1,Y-1) //插挡板法 分析有了这个组合 ...
- [原]sublime Text2
sublime Text2 升级到 2.0.2 build 2221 64位 的破破解 sublime Text2 download website 链接: http://pan.baidu.com/ ...
- 部署OpenStack问题汇总(二)--openstack dashboard 问题解决方案
在打开dashboard的时候报错: LocationParseError at /admin/ (LocationParseError(...), 'Failed to parse: Failed ...
- screen实战
VPS侦探在刚接触Linux时最怕的就是SSH远程登录Linux VPS编译安装程序时(比如安装lnmp)网络突然断开,或者其他情况导致不得不与远程SSH服务器链接断开,远程执行的命令也被迫停止,只能 ...
- php5.4 traits
PHP 5.4中的traits,是新引入的特性,中文还真不知道如何准确翻译好.其实际的目的,是为了有的场合想用多继承,但PHP又没多继承,于是就发明了这样的一个东西. Traits可以理解 ...
- vue Element-UI组件
一.UI组件 目的: 提高开发效率, 别人提供好一切, 拿过来直接用饿了么团队开源一个基于vue组件库 Element-UI ==> pc端 文档: http://element-cn.elem ...
- Egret动态设置按钮的图片
参考: 动态设置Button按钮的状态图片 按钮有3个状态,up down disabled.这里区别于source,source.down,source.disabled,而是每个状态单独一个ima ...
- Windows任务计划的设置
需求:因为要定时跑一些exe的小程序,来定时执行项目内的某段代码.所以需要建一个任务计划 1. 2. 3.
- [移动] Xamarin install
It was not possible to complete an automatic installation. This might be due to a problem with your ...