📅  最后修改于: 2023-12-03 15:37:28.355000             🧑  作者: Mango
在 R 编程中,元素列表是非常常见的一种数据结构。我们有时候需要对每个元素应用同一个函数。这时候,可以使用 lapply() 函数。
lapply(X, FUN, ...)
X
是一个列表,或者可以转换为列表(比如向量)的对象。FUN
是对列表元素所要执行的函数。...
是作为参数传递给 FUN
的其他参数。...
中的每个元素代表一组参数传递给 FUN
,即执行类似 FUN(X[[1]], ...)
、 FUN(X[[2]], ...)
以此类推的操作。lapply()
函数会把 X
中的每个元素作为第一个参数传递给 FUN
,其他参数通过 ...
传递。FUN
函数将应用于每个元素,并返回由结果组成的列表。
在 lapply() 函数所返回的结果中,每个元素与输入列表 X 中的对应元素的数据类型相同。
# 创建一个元素列表
list1 <- list(a = 1:5, b = -5:5, c = letters[1:5])
# 创建一个函数,用于计算一个向量中的平均值
mean_fun <- function(x) {
mean(x)
}
# 对 list1 中的每个元素应用 mean_fun() 函数
lapply(list1, mean_fun)
# 创建一个函数,用于把向量中的所有元素都加倍
double_fun <- function(x) {
x * 2
}
# 对 list1 中的每个元素应用 double_fun() 函数,并生成一个新的列表
lapply(list1, double_fun)
对于 lapply(list1, mean_fun)
,输出结果为:
$a
[1] 3
$b
[1] 0
$c
[1] NA
Warning message:
In mean.default(x) : argument is not numeric or logical: returning NA
对于 lapply(list1, double_fun)
,输出结果为:
$a
[1] 2 4 6 8 10
$b
[1] -10 -8 -6 -4 -2 0 2 4 6 8 10
$c
[1] NA NA NA NA NA
Warning message:
In x * 2 :
longer object length is not a multiple of shorter object length
lapply()
函数用于对元素列表应用相同的函数,并返回一个新的元素列表。在使用该函数时,需要注意函数的语法及功能,同时需要注意函数的输出结果。