R语言函数 sapply()

作者: Seurat_Satija | 来源:发表于2021-01-14 17:27 被阅读0次

    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

    相关文章

      网友评论

        本文标题:R语言函数 sapply()

        本文链接:https://www.haomeiwen.com/subject/wcqfnktx.html