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中已经分组排序好的前多少行的数据 这里通过一张表的示 ...
随机推荐
- 【docker】 追加端口映射时 报错 WARNING: IPv4 forwarding is disabled. Networking will not work.
解决办法: vi /etc/sysctl.conf 添加如下代码: net.ipv4.ip_forward= 重启network服务 systemctl restart network 查看: sys ...
- apache两种工作模式详解
prefork模式 这个多路处理模块(MPM)实现了一个非线程型的.预派生的web服务器,它的工作方式类似于Apache 1.3.它适合于没有线程安全库,需要避免线程兼容性问题的系统.它是要求将每个请 ...
- C语言程序设计--字符串与指针及数组与指针
数组的基本知识 数组的定义 #define SIZE 5 int array_int[5]; //未声明初始化,默认填零 float array_float[5] = {1.01, 2.23, 3.1 ...
- 如何分离p12(或pfx)文件中的证书和私钥
p12(或者pfx)文件里一般存放有CA的根证书,用户证书和用户的私钥 假设我们有一个test.p12文件 在安装了openssl的linux服务器上执行以下命令: 提取用户证书: openssl p ...
- Linux批量杀死进程
杀死进程在linux中使用kill命令了,我们可以下面来给各位介绍一篇关于Linux下批量杀死进程的例子,希望此例子可以对各位同学带来帮助的哦. 批量杀死包含关键字“php-fpm”的进程. kill ...
- Unity3D笔记 英保通三 脚本编写 、物体间通信
一.脚本编写 1.1.同一类型的方法JS和C#的书写方式却不一样主要还是语法,在工程中创建一个Cube 分别把JSTest.js和CSharp.cs 添加到Cube中 JSTest.js #pragm ...
- iOS - 开源框架、项目和学习资料汇总(动画篇)
动画 1. Core Animation笔记,基本的使用方法 – Core Animation笔记,基本的使用方法:1.基本动画,2.多步动画,3.沿路径的动画,4.时间函数,5.动画组.2. awe ...
- 远程服务器git搭建
在远程服务器如:/var/www下创建hello.git 然后git init --bare hello.git cd hello.git会看到下面的目录和文件 然后创建可以访问git的用户 git ...
- JAVA补充-抽象类
1.抽象类基本概念 package com.neusoft.abstracted; /** * 抽象类:在class之前加abstract关键字 * 抽象方法语法: 修饰符 abstract 返回值类 ...
- 【技术分享】Java 序列化与反序列化安全分析
唯品会安全应急响应中心 https://mp.weixin.qq.com/s?src=11×tamp=1546915765&ver=1317&signature=mW ...