R语言笔记9:认识循环函数、lapply和sapply

Loop functions

循环是R语言中最强大的函数之一。循环函数背后的思路是,当你想要对一个或一组对象执行循环的时候,使用这种方式可以让你在在很少的空间内执行大量的重复工作,不必向命令行那样做很多输入。

之前我们学习过循环和循环,除了这些之外还有很多更加简洁的循环函数,他们通常名字里都带着这个词,主要包含:

是最最主力的函数。他的主要用途是,对列表(list)对象而言,你想在其内部做一个循环,并对列表中的每一个元素运用函数

是的一个变体,简化了的结果

是一个对数组进行行或列运算的函数。如果你想对矩阵或其他高维数组求和,这个函数会非常好用。

是的缩写,将函数应用于向量的子集。

是的多变量版本。

除了这些之外,还有一个函数叫做,它不对对象进行任何操作,但是常常和、等结合使用,可以将对象分成子块。

下面先认识一下最常用的函数

有三个参数:第一个是输入对象,即名叫x的列表;第二个是一个函数名;其余的参数可以传递给参数。函数是这样的:

如果x不是列表,可能会被强制转化成列表,如果没有强制转化就会报错。对于来说,重点要记住的就是他的对象是列表。

PS. 常用来给列表中的每个元素做运算的函数传递参数

举例子:

创建一个列表x,包含两个元素,a是1-5数列,b是10以内的随机数字组成的向量。使用函数来计算平均值,生成结果输入新列表y中:

新生成的列表y的元素,和原列表x有相同的名字,即a和b,在新列表y中显示出了计算的平均值。

再举个栗子:

创建一个序列赋值给x,然后使用随机数发生器生成符合均匀分布的随机变量。函数的第一个参数就是你要产生随机数字的个数,这个个数就是从x来的,即1-4。

使用函数就会自动将生成的随机数字返回得到一个列表:

上面两个例子中,都只填了和两个参数,没有设置,都为的默认值。如果要设置的话,填在后面就好:

例如,上面的函数,默认是在0-1之间取值,如果修改区间,改成5-10,可以通过传递参数,作如下修改:

和相关函数充分利用了所谓的匿名函数,匿名函数没有函数名,所以我们不用给他们分配函数名,可以直接创建函数

这个例子中,我们创建了一个包含两个矩阵a、b的列表:

我现在想提取每个矩阵的第一列,结果发现没这个函数。

那么就来创造一个函数提取矩阵的第一列:

在我临时创造的函数里面,命名了一个参数叫,用于提取第一行,其实你想叫他什么都可以因为出了之后他就毫无意义了。

所以使用的时候就知道了,有函数就用,没有就现写

是的变种。它的任务是将的结果尽量的简化。

总是返回一个列表。就算是所有元素长度都一样,没必要是一个列表的时候,他也给你返回列表。

就会更加灵活一些,可以直接返回一个包含所有元素的向量,将它简化。

对比:

先看一下“一根筋”的

再来看一下:

如果数据不适合简化的话,还是会返回一个列表的。

参考资料:

视频课程 R Programming by Johns Hopkins University:https://www.coursera.org/learn/r-programming/home/welcome

讲义 Programming for Data Science :https://bookdown.org/rdpeng/rprogdatascience/R

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180403G1E2E400?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券