《数据科学: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

相关文章
|
Java 程序员 云栖大会
9月20日云栖精选夜读 | 如何轻松搞定数据科学面试:Python&R语言篇
对于数据科学家来说,工作的一大部分都需要在交互式编程环境中对数据进行处理、分析和可视化。 在过去几年,R语言和Python成了进行数据科学中最炙手可热的两种语言。这两种语言各有优缺点,掌握这两种语言大有益处,但是针对面试者而言,最好的方式是学习其中一种并熟练掌握。
3088 0
|
数据挖掘 数据库 Python
【R数据科学读书笔记】R语言的数据结构原来可以这样理解
R语言的数据结构原来可以这样理解 这是R数据科学的读书笔记之一,《R数据科学》是一本教你如何用R语言进行数据分析的书。即便我使用R语言快2年多了,但是读这本书还是受益颇多。
1029 0
|
自然语言处理 数据挖掘 Unix
【R数据科学读书笔记】R语言中的管道操作
R语言中的管道操作 这是R数据科学的读书笔记之一,《R数据科学》是一本教你如何用R语言进行数据分析的书。即便我使用R语言快2年多了,但是读这本书还是受益颇多。
1186 0
|
机器学习/深度学习 Python
Python赶超R语言,成为数据科学、机器学习平台中最热门的语言?
近日,kdnuggets做了一个关于数据科学、机器学习语言使用情况的问卷调查,他们分析了954个回答,得出结论——Python已经打败R语言,成为分析、数据科学和机器学习平台中使用频率最高的语言。
1181 0
|
机器学习/深度学习 大数据 物联网