R语言数据处理R语言学习

R语言函数 sapply()

2021-01-14  本文已影响0人  Seurat_Satija

R函数 sapply()


sapply()函数的作用是:将列表、向量或数据帧作为输入,并以向量或矩阵的形式给出输出。
sapply()函数和lapply()函数做同样的工作,但是返回一个向量。

sapply(X, FUN)

| 参数 | 描述 |
| X | 向量或对象 |
| FUN | 作用于x中每个元素的函数 |


我们可以从cars数据集中测量汽车的最小速度和停止距离:

dt <- cars
lmn_cars <- lapply(dt, min)
smn_cars <- sapply(dt, min)
lmn_cars
# 结果
$speed
[1] 4
$dist
[1] 2

smn_cars
# 结果
speed  dist
    4     2

汽车的最大速度和停止距离

lmxcars <- lapply(dt, max)
smxcars <- sapply(dt, max)
lmxcars
# 结果
$speed
[1] 25
$dist
[1] 120

smxcars
# 结果
 speed  dist
    25   120

我们可以在lapply()或sapply()中使用用户定义的函数。我们创建一个名为avg的函数来计算向量的最小值和最大值的平均值。

avg <- function(x) {
  ( min(x) + max(x) ) / 2}
fcars <- sapply(dt, avg)
fcars
# 结果
 speed  dist
  14.5  61.0

在返回的输出中,sapply()函数比lapply()更有效,因为sapply()将值分隔存储到一个向量中。在下一个示例中,我们将看到情况并非总是如此。


向量切片

我们可以使用可互换的lapply()或sapply()来分割数据帧。我们创建一个函数below_average(),它接受一个由数值组成的向量,并返回一个只包含严格高于平均值的值的向量。我们用same()函数比较这两个结果。

below_ave <- function(x) {
    ave <- mean(x)
    return(x[x > ave])
}
dt_s<- sapply(dt, below_ave)
dt_l<- lapply(dt, below_ave)
identical(dt_s, dt_l)
结果:
[1] TRUE

https://www.geocalculate.com/4639.html

上一篇下一篇

猜你喜欢

热点阅读