R 中带有示例的 Apply(), lapply(), sapply(), tapply() 函数

2025年3月17日 | 阅读 7 分钟

R 中的 apply() 函数

在 R 中,使用 apply() 函数可以对矩阵、数组或列表应用函数。对于对这些结构中保存的数据执行操作,这是一个非常有用的函数。

以下是 apply() 函数的语法

apply(X, MARGIN, FUN, ...)

这里;

  • MARGIN 参数指定应将该函数应用于的边距。它可以是这些值的向量,例如 1、2 或行和列的组合。
  • X 是正在操作的矩阵、数组或列表。
  • FUN 是期望的结果。
  • 该函数的可选参数包含在“...”中。

以下是 apply() 的一些示例

示例 1:按行对矩阵应用函数

假设我们有如下所示的矩阵

可以使用 Apply() 确定每一行的平均值

输出

Apply(), lapply(), sapply(), tapply() Function in R with Examples

示例 2:按列对矩阵应用函数

可以使用 Apply() 确定矩阵 m 的每一列的标准差

输出

Apply(), lapply(), sapply(), tapply() Function in R with Examples

示例 3:对列表应用函数

考虑一个向量列表

可以使用 Apply() 确定每个向量的总和

输出

将以此方式报告列表中每个向量的总和

Apply(), lapply(), sapply(), tapply() Function in R with Examples

注意:由于我们要将该函数应用于列表中的每个向量,因此在此实例中,我们使用 1 作为 MARGIN 的值(即,沿第一个边距)。

示例 4:将用户定义的函数应用于矩阵的行

假设我们有如下所示的矩阵

Apply() 允许我们将用户定义的函数应用于每一行

输出

Apply(), lapply(), sapply(), tapply() Function in R with Examples

在此示例中,f() 函数计算每一行的平方和。

总而言之,apply() 是一个相当强大的函数,可以以多种不同的方式应用于操作矩阵、数组和列表。

R 中的 lapply() 函数

R 编程语言的一个有用功能是 lapply() 函数,它使您可以将特定函数应用于列表或向量中的每个元素。输出生成一个与输入长度相同的列表,其中每个条目表示将指定函数应用于其对应输入元素的结果。

lapply() 函数的底层语法如下

在这种情况下,FUN 是将应用于 X 的每个成员的函数。X 是输入列表或向量。您可以通过将其作为“... argument”传递来向 FUN 函数添加更多参数。

lapply() 的一些示例

示例 1

让我们看一个说明如何使用 R 的 lapply() 函数的示例。

假设我们要确定数字列表中每个数字的平方根。列表中的每个元素都可以使用 lapply() 方法应用 sqrt() 函数。这是关键

代码

输出

Apply(), lapply(), sapply(), tapply() Function in R with Examples

正如您所看到的,lapply() 函数将 sqrt() 函数应用于列表中的每个元素,然后返回一个与输入长度相同的列表,其中包含相应输入元素的平方根的元素。

示例 2

lapply() 函数也可以与用户定义的函数一起使用。例如,让我们创建一个函数,该函数将 10 添加到给定的整数,然后将此函数应用于列表中的每个项目

代码

输出

Apply(), lapply(), sapply(), tapply() Function in R with Examples

在此实例中,lapply() 函数将 add 10() 函数应用于列表的每个元素,这导致生成一个与输入长度相同的列表,其中包含将 10 添加到其对应输入元素的结果的每个元素。

重要的是要记住,无论输入是什么,lapply() 方法总是生成一个列表。例如,在向量上使用 lapply() 方法的结果仍然是一个列表:这是一个例子来说明这一点。

代码

输出

Apply(), lapply(), sapply(), tapply() Function in R with Examples

在此实例中,在 lapply() 方法将输入向量转换为列表后,使用了 sqrt() 函数。

R 中的 sapply() 函数

R 编程语言的一个有用功能是 sapply() 函数,该函数可用于简化将指定函数应用于列表或向量的每个元素的代码。将生成一个与输入长度或维度相同的向量或矩阵作为输出,其中每个元素都是将指定函数应用于其对应输入元素的结果。

sapply() 函数的语法如下

在这种情况下,FUN 是将应用于 X 的每个成员的函数。X 是输入列表或向量。默认情况下,simplify 参数设置为 TRUE,这意味着如果函数的输出是向量或矩阵,则结果也将是向量或矩阵。要向 FUN 函数发送更多参数,请使用“... argument”。

让我们看一个说明如何使用 R 的 sapply() 函数的示例。

假设我们要确定数字列表中每个数字的平方根。可以使用 sapply() 方法将 sqrt() 函数应用于列表中的每个元素。这是关键

代码

输出

Apply(), lapply(), sapply(), tapply() Function in R with Examples

正如您所看到的,sapply() 方法获取了列表中的每个元素,并将 sqrt() 函数应用于它。然后,它返回一个与输入长度相同的向量,其中每个元素都是其对应输入元素的平方根。

sapply() 函数也可以与用户定义的函数一起使用。例如,让我们创建一个函数,该函数将 10 添加到给定的整数,然后将此函数应用于列表中的每个项目

代码

输出

Apply(), lapply(), sapply(), tapply() Function in R with Examples

在此实例中,sapply() 函数使用 add 10() 函数将 10 添加到列表的每个元素,返回一个与输入长度相同的向量,其中每个元素是加 10 的结果。

记住 sapply() 函数也适用于向量,这一点至关重要。在这种情况下,结果仍然是一个向量

代码

输出

Apply(), lapply(), sapply(), tapply() Function in R with Examples

在这种情况下,sapply() 方法将输入向量视为列表,并将 sqrt() 函数应用于每个元素,返回一个与输入长度相同的向量,其中每个元素都是其对应输入元素的平方根。

R 中的 tapply() 函数

对于基于另一个变量的值将指定函数应用于向量或数组的子集,R 语言的 tapply() 函数是一个有用的工具。根据所使用的函数,输出是一个向量、数组或列表。

tapply() 函数的基本语法如下

tapply(X, INDEX, FUN, ...)

这里,FUN 是要应用于每个子集的函数,X 是输入向量或数组,INDEX 是一个或多个因子的列表,表示子集,... 是可以提供给 FUN 函数的可选参数。

让我们看一个说明如何使用 R 的 tapply() 函数的示例。

假设我们有一个类别向量和一个数字向量。我们正在寻找每个类别的平均值。

可以使用 tapply() 函数将 mean() 函数应用于向量的每个子集,具体取决于类别。代码在这里;

代码

输出

Apply(), lapply(), sapply(), tapply() Function in R with Examples

正如您所看到的,tapply() 函数使用 mean() 函数根据类别分析向量的每个子集,返回一个带有每个类别结果的命名向量。

结论

通过使用 R 的 sapply() 函数将给定的函数应用于列表或向量的每个元素,可以获得与输入长度或维度相同的简化向量或矩阵。

开发代码可以节省大量时间和精力,尤其是在处理大型数据集时。此外,sapply() 方法是一个灵活的函数,可以与列表、向量以及内置和用户定义的函数一起使用。

所有使用 R 并处理数据处理和分析的人都应该熟悉此函数。