美文网首页R语言做生信
13 apply,lapply,sapply

13 apply,lapply,sapply

作者: 陈宇乔 | 来源:发表于2019-05-14 00:04 被阅读22次

    1. apply函数

    apply(X, MARGIN, FUN, ...)
    

    X:数组、矩阵、数据框
    MARGIN: 按行计算或按按列计算,1表示按行,2表示按列
    FUN: 自定义的调用函数
    …: 更多参数,可选

    x<-matrix(1:12,ncol=3)
    apply(x,1,sum)
    [1] 15 18 21 24
    

    apply的计算顺序

    image.png

    自定义函数

    一个自变量

    image.png

    和sqrt函数一样,MyFunction也是一个应用在单一元素(数值)上的函数。和之前sqrt函数一样,向量的定义为计算结果的排列方式,我们只需要更改函数的书写方法。将sqrt变为 function(x) MyFunction(x)。这一写法翻译成中文是,应用一个自变量为x的函数,这个函数(我之前定义过,起了名字)叫MyFunction,矩阵里的每一个元素(按照运算顺序)都是x。


    image.png

    两个自变量

    那么,如果这个函数有两个自变量呢?我们定义第二个函数,有两个自变量x和y的MyFunction2。不要看到y就觉得是运算结果呀,只要在定义函数的时候把y放到function后面的括号内,y也可以是自变量。我们的MyFunction2函数定义为:


    image.png

    首先,我们假设数据矩阵对应的是自变量x,同时另一个自变量y为数值3。在这种情况下,向量值依然判定运算结果的排列方式,同时设置MyFunction2为对于x的函数,写为function(x) MyFunction (x,3)。来看看R中对两个向量值分别的运算结果。


    image.png
    第二种情况是,我们数据矩阵的数值对应的是自变量y,同时另一个自变量x数值为3。这时,我们需要告诉apply函数,现在自变量是y了。写为function (y) MyFunction(3,y)。从这个写法上可以看出,function定义了,在多元函数情况下,数据矩阵的自变量对应位置。来看看改变自变量定义后apply函数的运算结果: image.png

    参考

    https://zhuanlan.zhihu.com/p/26029242

    相关文章

      网友评论

        本文标题:13 apply,lapply,sapply

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