首页
学习
活动
专区
工具
TVP
发布

R语言笔记10:循环函数apply、tapply、mapply

昨天学习了循环函数和,今天继续看看他们的姊妹篇。

函数是另一个循环函数,它可以把一个函数应用在一个数组的各个维度上,应用对象是矩阵的行和列。(矩阵是最常见的数组类型,是二维数组)

在命令行中比for循环相对更好用一些,因为输入较少。

函数长这样:

第一个参数是一个数组,是一个有维度的向量;

第二个参数是一个整数向量,指示哪一行或列需要保留;

第三个重要参数是你要应用到每个行、列的函数命令,这个函数可以是已经存在的函数,也可以是匿名函数。

第四个参数是其他你想传递的参数

举例

首先创建一个20行10列的矩阵,矩阵内是已生成的正态随机变量:

这个矩阵的第一个维度是20行,第二个维度是10列。

如果我们要对每列求平均值,那就保留第二个维度,即设置为2,这样就得到一个长为10的数字向量,每个数字是每一列的平均值:

同理,如果我想求每一行的数据之和,那么就指定为1,只保留所有行(第一维度),消掉所有列。得到长度为20 的向量:

对于计算总和、平均值之类的简单操作而言,有一些经过优化的专用函数可以快速实现这些功能,他们就是~~:

=

=

=

=

所以上面的对矩阵x的各行求和,可以直接用这些函数:

函数也可以应用在复杂一点的命令上。

还是以刚才的随机数矩阵为例,我们想计算每一行的25%和75%分位数,使用函数,用来传递其他参数,结果如下(每一行都会有对应的两个返回值):

除了二维矩阵之外,也可以用于多维矩阵,即数组

如,我们先创建一个正态随机变量数组,是一个三维矩阵,然后求每个二维矩阵的和,

设置为就可以消除掉第三个维度:

同理,如果使用:

是和的多变量版本

也就是说

和等等都是将参数中的函数应用到某个单一的对象上,而的思想是把一个函数并行应用到一组不同的对象

的第一个参数是你要应用的函数,

第二个用于传递参数

第三个参数是当你需要给函数传递更多参数是才会用到

是一个很有用的函数,它可以将函数应用于某向量的子集。

当我们想计算该向量某部分的概要统计量时,可以使用。

对于该数值向量中的每一组而言,我们都可以计算一个统计量,这时,我们需要另一个变量或者对象,来识别该数值向量中各元素的分组

第一个参数是数值或者其他类型的向量

第二个参数是另一个向量,长度和第一个向量相同,用来表明第一个向量中的各个元素分别属于哪一组

第三个参数是你想应用的函数。

举例

x是一个数组向量,其中包括10个正态随机数、10个均匀随机数、10个均值是1的正态随机数;这些数字可以分成三组,用函数创建因子变量,这个因子变量有三个水平,每个水平重复10次:

应用函数,求每组数据的平均值

如果设置为不简化,那么结果将返回一个列表。

返回观测值的范围,得到每组中的最大值和最小值:

参考资料:

视频课程 R Programming by Johns Hopkins University:https://www.coursera.org/learn/r-programming/home/welcome

讲义 Programming for Data Science :https://bookdown.org/rdpeng/rprogdatascience/R

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180404G1I4XU00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券