learning R with lapply and sapply(不懂)

  在这节中,我们将学习lapply()和sapply()两个作为循环功能中最重要的两个函数。它以及其他相关的vapply(),tapply()提供了一个方便的手段去执行数据分析中的“Split-Apply-Combine”

   将资料组放在一个叫flags的变量中,更多的信息可以在http://archive.ics.uci.edu/ml/datasets/Flags中找到。我们可以用head(flags)来看这个内置数据集的前6行,可以用dim(flags)来查看这个集的维数和大小。

 

作为任何数据集,我们想知道变量存储的形式,即每种变量的类型是怎么样的,我们可以用class(flags).通过这种方式,我们可以看出整个数据集是以data.frame的形式来进行存储的,但是我们并不知道每种变量他们各自的存储形式。如果想知道,我们需要单独对每一列的元素使用class(),这样最好使用循环的方式来进行。即使用lapply()和sapply()。

则输出查看结果,形式如下图所示:


lapply()中的l代表列表list,如果使用class(cls_list),出来的结果是列表“list”。从而得到每列元素的数据类型。


sapply()函数允许在幕后自动调用lapply()函数,然后尝试将结果简化。


这时可以发现,其出来的结果简化成了符号向量。

   总的来说,如果结果是每个元素都是长度为1的列表,那么sapply()返回的就是一个向量,s代表简化;如果结果每个元素向量都大于1且长度相等,则sapply()函数返回一个矩阵;其他情况就返回一个列表,和lapply()函数没有差别。

   数据集的11到17列是指示变量,并且每个都代表了一个不同的颜色



这里需要注意逗号的意思代表我们想要所有行,但只要11到17列。




由此我们可以看出,sapply()函数可以把结果简化成向量,那是因为列表中的每一个元素长度都为1


下面我们来举一个sapply()函数不能简化lapply()函数的例子。unique()函数返回一个所有相同值都被移除的向量。







  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值