本节书摘来自华章计算机《R语言数据挖掘:实用项目解析》一书中的第1章,第1.11节,作者[印度]普拉迪帕塔·米什拉(Pradeepta Mishra),译 黄芸,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1.11 apply原理
apply函数以一个数组、一个矩阵或一个数据框作为输入,返回一个数组格式的结果。计算或运算由用户的自定义函数或内置函数定义。margin参数用于指定函数要作用于哪条边以及要保留哪条边。如果使用的数组是一个矩阵,那么可以指定margin是1(将函数应用于行)或2(将函数应用于列)。函数可以是任意用户自定义函数或内置函数,比如mean、median、standard deviation、variance等。这里我们将用Artpiece数据集来执行这个任务:
lapply函数在处理数据框(应用任何函数)时很有用。在R语言中,数据框被当作一个列表,数据框中的变量就是列表中的元素。因此,我们可以利用lapply将一个函数应用到一个数据框中的所有变量上,示例如下:
sapply函数适用于一个列表中的元素,返回的结果是一个向量、矩阵或者列表。当参数是simplify=F时,sapply函数会像lapply函数那样返回一个列表;反之,当参数是simplify=T,即默认参数时,sapply会以简化的格式返回结果:
有时我们想将一个函数应用到一个向量的子集,这些子集通常由其他向量定义(通常是一个因子)。tapply函数输出的是一个矩阵/数组,矩阵/数组中的每个元素是向量的g分组上f的值,g分组作用于行/列名上:
apply函数族还包含其他一些函数,例如:
- eapply:将一个函数应用于一个环境中的变量。
- mapply:将一个函数应用于多个列表或多个向量参数。
- sapply:递归地将一个函数应用于一个列表。