📜  R中lapply()与sapply()之间的区别(1)

📅  最后修改于: 2023-12-03 14:47:11.282000             🧑  作者: Mango

R中lapply()与sapply()之间的区别

在R语言中,lapply()和sapply()是两个非常常用的函数,它们都是用来对向量或列表进行操作的。虽然它们的名称很相似,但是它们的使用方式和功能有一些区别。下面对它们进行详细的介绍。

lapply()

lapply()函数是“列表应用”的缩写,它是将一个函数应用于列表中的每个元素,并返回一个新的列表。lapply()函数的语法如下:

lapply(X, FUN, ...)

其中,X是要操作的列表或向量,FUN是要应用于每个元素的函数,…表示传递给FUN的其他参数。lapply()函数返回一个与X相同长度的列表,每个元素是FUN应用到对应元素的结果。

下面是一个简单的示例,使用lapply()函数对一个列表的每个元素取平方:

numbers <- list(1:3, 4:6, 7:9)
lapply(numbers, function(x) x^2)

输出结果为:

[[1]]
[1] 1 4 9

[[2]]
[1] 16 25 36

[[3]]
[1] 49 64 81
sapply()

sapply()函数是“简单应用”的缩写,它是lapply()函数的升级版。sapply()函数对列表或向量进行操作,将其转换为向量并返回一个向量。sapply()函数的语法与lapply()函数相同,只不过它将返回一个向量而不是列表。

下面是一个简单的示例,使用sapply()函数对一个列表的每个元素取平方:

numbers <- list(1:3, 4:6, 7:9)
sapply(numbers, function(x) x^2)

输出结果为:

[1]  1  4  9 16 25 36 49 64 81
区别
  1. 返回类型不同:lapply()函数返回一个列表,sapply()函数返回一个向量。
  2. sapply()函数自动简化返回结果,可以避免不必要的嵌套列表。
  3. sapply()函数有一些额外的选项,比如设置返回类型等。

总之,lapply()函数和sapply()函数都是非常实用的函数,具体使用哪一个取决于具体情况。如果想保留列表的结构,并且不需要进行简化操作,可以使用lapply()函数。如果想自动简化结果并将其转换为向量,可以使用sapply()函数。