目录

一、apply()函数

二、sapply()函数

三、lapply()函数

四、tapply()函数

​五、iris鸢尾花数据集


R语言提供了一个循环系统称apply家族,它具有类似for循环的功能,但是若想处理相同问题,apply家族函数好用太多了。

一、apply()函数

apply()函数主要功能是将所设定的函数应用到指定对象的每一行或列。它的基本使用格式如下:

apply(x,MARGIN,RUN,...)

x:要处理的对象,可以是矩阵、N维数组、数据框。

MARGIN:如果是矩阵则值为1或2,1代表每一行,2代表每一列。

FUN:要使用的函数。

...:FUN函数所需的额外参数。

二、sapply()函数

apply()函数尽管好用,但主要是用在矩阵、N为数组、数据框,若是面对向量,列表呢?此时可以使用sapply()(注:数据框数据也可用),此函数开头是s,是simplify的缩写,表示会对执行结果的对象进行简化。sapply()函数的使用格式如下:

sapply(x,FUN,...)

 x:要处理的对象,可以是向量、数据框或列表。

FUN:要使用的函数。

...:FUN函数所需的额外参数。

sapply这个函数所返回的数据必要时皆会被简化,简化原则如下:
1.如果处理完列表、数据框或向量后,返回是一个数字,则返回结果会被简化为向量

2.如果处理完列表、数据框后,返回的向量有相同的长度,则返回结果会被简化为矩阵

3.如果是其他状况则返回是列表。 

三、lapply()函数

lapply()函数的使用方法与sapply()函数几乎相同,但是lapply()函数的首字母l是list的缩写,表示lapply()函数所传回的是列表。lapply()函数的使用格式如下:

lapply(x,FUN,...)

x:可以是向量、数据框和列表。

FUN:预计使用的函数。

...:FUN函数所需的额外参数。

如果我们在sapply()函数内增加参数“simplify”,同时将它设为FALSE,则会获得与lapply()函数相同的返回结果。

四、tapply()函数

tapply()函数主要是用于一个因子或因子列表,执行指定的函数,最后获得汇总信息。

tapply()函数的使用格式如下:

tapply(x,INDEX,FUN,...)

x:是要处理的对象,通常是向量变量,也可是其他数据类型的数据。

INDEX:因子或分类的字符串向量或因子列表。

FUN:要使用的函数。

...:FUN函数所需的额外参数。

 下面使用R语言内建的数据state.region,计算美国4大区包含的各州的数量。

使用R语言内建的数据state.region和state.x77,计算美国4大区百姓的平均收入。

 

 

五、iris鸢尾花数据集

iris中文是鸢尾花,这是系统内建的数据框数据集,内含150个记录,如下:

下面是前6个记录:

 下面使用lapply()函数列出iris数据集的元素类型:

上述实例返回列表数据,而sapply()函数可以简化传回数据:

下面计算每字段的平均值:

上述实例虽然计算出来各字段的平均值,但出现了Warning message,主要是因为“Species”字段内容是因子,不是数值,为了解决这个问题,可以在sapply()函数内设计一个函数判别各字段是否是数值,如果不是则传回NA。

特别留意iris数据集的Species字段的数据是因子类型,所以可以使用tapply()函数执行各类数据运算。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐