《数据科学:R语言实现》——1.6 理解闭包

本节书摘来自华章出版社《数据科学:R语言实现》一 书中的第1章,第1.6节,作者:R for Data Science Cookbook 丘祐玮(David Chiu),更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.6 理解闭包

函数是R语言的一级成员。换句话说,你可以给一个函数传递另一个函数。在之前的教程中,我们展示了如何创建一个被命名的函数。然而,我们也可以创建一个不带名字的函数,即闭包(也就是匿名函数)。在本教程中,我们会展示如何在标准函数中使用闭包。
准备工作
确保你已经在操作系统中安装了R语言,完成了之前的步骤。
实现步骤
执行下列步骤,在函数中创建闭包。
1.让我们回顾一下被命名的函数是如何工作的:
screenshot

screenshot

运行原理
在R语言中,你不需要给每一个函数都指定名字。相反,你可以使用闭包来整合方法与对象。因此,你可以在一个对象中创建更小、更简单的函数来完成复杂的任务。
在第1个例子中,我们展示了如何创建一个正常命名的函数。我们可以通过给函数传值来调用函数。另外,我们在第2个例子中展示了闭包是如何工作的。在这个例子中,我们不需要给函数指认名称,但是依然可以给匿名函数传值,并获取返回值。
然后,我们展示了如何把一个闭包添加到名为maxval的函数中。这个函数仅仅返回两个参数中的最大值。然而,我们也可以在另一个函数内部使用闭包。而且,我们还可以在更高阶的函数中把闭包当作参数使用,例如lapply和sapply。这里,我们把匿名函数当作函数的参数,来返回任意给定列表中第1个向量值与10的乘积。
接着,我们给出了一个函数,或者也可以把函数存放在列表中。 这样,当我们想把乘积函数应用到给定的向量上时,就可以把它当作函数lapply的参数列表来调用。
更多技能
除了在函数lapply内部使用闭包,我们也可以把闭包传递给apply函数族中的其他函数。这里,我们展示了如何把同一个闭包传递给函数sapply:
screenshot

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值