R:矩阵apply()函数
来源:互联网 发布:sql注入 union select 编辑:程序博客网 时间:2024/05/21 10:55
apply()函数允许用户在矩阵的各行或各列上调用指定的函数。apply()函数的一般形式为:apply( m, dimcode, f, fargs ),参数解释如下:
•m 是一个矩阵。
•dimcode 是维度编号,若取值为1代表对每一行应用函数,若取值为2代表对每一列应用函数。
•f是应用在行或列上的函数。
•fargs是f的可选参数集。
例如,对于矩阵应用该函数:
> z <- matrix( c( 1, 2, 3, 4, 5, 6 ), nrow=3 )
> apply( z, 2, mean )
[1] 2 5
注:本例也可以使用colMeans()函数直接实现。
apply()里也可以使用用户自己定义的函数,就和使用R内部函数一样。
> f <- function( x ) x / c( 2, 8 )
> apply( z, 1, f )
[,1] [,2] [,3]
[1,] 0.5 1.000 1.50
[2,] 0.5 0.625 0.75
f()函数把一个向量除以(2,8)。(如果向量x的长度大于2,那么(2,8)就会循环补齐)。apply()函数则对z的每一行分别调用f()。z的第一行是(1,4),所以在调用f()时,形式参数x对应的实际参数是(1,4)。然后R计算(1,4)/(2,8)的值,这在R中是向量对应元素运算,得到(0.5,0.5)。对其他两行的计算与此类似。
所得结果y是一个2h 3的矩阵而非3h 2的。第一行的计算结果(0.5, 0.5)构成apply()函数输出结果的第一列,而不是第一行。这就是apply()函数的默认方式。如果所调用的函数返回的是一个包含k个元素的向量,那么apply()的结果就有k行。如果需要的话,可以使用转置函数t(),例如:
> t( apply( z, 1, f ) )
[,1] [,2]
[1,] 0.5 0.500
[2,] 1.0 0.625
[3,] 1.5 0.750
如果所调用的函数只返回一个标量(即单元素向量),那么apply()的结果就是一个向量,而非矩阵。
在用apply()时,待调用的函数至少需要一个参数。上例中,f()的形式参数在这里对应的实际参数就是矩阵的一行(或一列)。有时,待调用函数需要多个参数,用apply()调用这类函数时,需要把这些额外的参数列举在函数名字后面,用逗号隔开。
使用apply()函数并不像很多人以为的那样,能使程序的运行速度加快。其优点是使程序更紧凑,更易于阅读和修改,并且避免产生使用循环语句时可能带来的bug。此外,并行运算是R目前发展的方向之一,apply()这类函数会变得越来越重要。
- R:矩阵apply()函数
- R: 矩阵运算及常用函数 III - *apply Part I
- R: 矩阵运算及常用函数 IV - *apply Part II
- R中的各种apply函数
- 【R语言】apply函数族
- #R#R语言apply函数家族
- apply lapply sapply等R函数
- R语言 apply函数家族详解
- R语言 apply函数家族详解
- R语言 apply函数家族详解
- R语言 apply函数家族详解
- R语言apply函数族笔记
- R语言apply函数族笔记
- R语言apply族函数详解
- 掌握R语言中的apply函数族
- R语言中apply函数家族
- R之apply家族函数介绍
- R语言中apply函数使用
- 石子合并(动态规划)详细解题报告
- C#发送邮件工具类
- 2st
- svn: Error running context: 由于目标计算机积极拒绝,无法连接。
- Python socket 入门
- R:矩阵apply()函数
- Mysql 存储引擎中InnoDB与Myisam的主要区别
- 20141027
- 公司网络web服务器负载均衡解决方案
- android版自定义文件浏览器
- 视图和表的区别
- 盘点开发者最喜爱的十大开源Xcode插件
- 初学Java的人如何建立信心
- 【UML】——概述