美文网首页
R语言学习笔记

R语言学习笔记

作者: 世界很大_我想去体验 | 来源:发表于2021-05-07 20:57 被阅读0次

    1. apply,sapply,lapply,tapply,vapply以及mapply的用法

    1.1 apply()

    apply(m,dimcode,f,fargs)

    m 是一个矩阵。
    dimcode是维度编号,取1则为对行应用函数,取2则为对列运用函数。
    f是函数
    fargs是f的可选参数集

    z <- matrix(1:6, nrow = 3)
    f <- function(x) {
    x/c(2, 8)
    }
    apply(z,1,f) #f函数得到两个元素,则为几行,竖着来的
    [,1] [,2] [,3]
    [1,] 0.5 1.000 1.50
    [2,] 0.5 0.625 0.75

    1.2 lapply()

    lapply()(代表list apply)与矩阵的apply()函数的用法类似, 对列表的每个组件执行给定的函数,并返回另一个列表。

    x <- list(a = 1:10, beta = exp(-3:3), logic = c(TRUE,FALSE,FALSE,TRUE))
    lapply(x, mean)
    $a
    [1] 5.5

    $beta
    [1] 4.535125

    $logic
    [1] 0.5

    1.3 sapply()

    sapply()(代表simplified [l]apply)可以将结果整理以向量,矩阵,列表 的形式输出。

    sapply(x, mean)
    a beta logic
    5.500000 4.535125 0.500000
    sapply(x, quantile) #每一个对应组件输出5个元素,所以为5行,像矩阵一样,竖着来的。
    a beta logic
    0% 1.00 0.04978707 0.0
    25% 3.25 0.25160736 0.0
    50% 5.50 1.00000000 0.5
    75% 7.75 5.05366896 1.0
    100% 10.00 20.08553692 1.0
    sapply(2:4, seq)
    [[1]]
    [1] 1 2

    [[2]]
    [1] 1 2 3

    [[3]]
    [1] 1 2 3 4

    1.4 vapply()

    vapply()与sapply()相似,他可以预先指定的返回值类型。使得得到的结果更加安全。

    vapply(x, quantile, c(1,2,5,6,8)) #它需要一个5个长度的向量来告诉他返回的类型,向量里面的内容可以变换
    a beta logic
    0% 1.00 0.04978707 0.0
    25% 3.25 0.25160736 0.0
    50% 5.50 1.00000000 0.5
    75% 7.75 5.05366896 1.0
    100% 10.00 20.08553692 1.0

    1.5 tapply( )

    tapply(x,f,g)需要向量 x (x不可以是数据框),因子或因子列表 f 以及函数 g 。
    tapply()执行的操作是:暂时将x分组,每组对应一个因子水平,得到x的子向量,然后这些子向量应用函数 g

    a <- c(24,25,36,37)
    b <- c('q', 'w', 'q','w')
    tapply(a, b, mean)
    q w
    30 31

    1.6 mapply()

    多参数版本的sapply()。第一次计算传入各组向量的第一个元素到FUN,进行结算得到结果;第二次传入各组向量的第二个元素,得到结果;第三次传入各组向量的第三个元素…以此类推。

    l1 <- list(a = c(1:10), b = c(11:20))
    l2 <- list(c = c(21:30), d = c(31:40))
    mapply(sum, l1a, l1b, l2c, l2d)
    [1] 64 68 72 76 80 84 88 92 96 100

    相关文章

      网友评论

          本文标题:R语言学习笔记

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