《数据科学:R语言实现》——1.11 调试函数

简介:

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

1.11 调试函数

作为一个程序员,调试是日常最常见的任务。最简单的调试方法是在期望的位置插入一条打印语句;然而,这种方法很低效。这里,我们会展示如何使用一些R调试工具来加速调试过程。
准备工作
确保你已经在操作系统中安装了R语言,完成了之前的步骤。
实现步骤
执行下列步骤,来调试R函数。
1.首先,我们创建函数debugfunc,其带有参数x和y,但是我们只返回x:
screenshot
screenshot
screenshot
screenshot
screenshot

运行原理
由于所有的代码都无法避免缺陷,因此R程序员同样需要准备好优秀的调试工具,做好调试的准备。在本教程中,我们展示了如何使用函数debug、browser、trace和traceback来调试函数。
在第1部分中,我们讲解了如何使用debug对已有函数进行调试。我们首先创建了一个名为debugfunc的函数,其带有两个输入参数:x和y。然后,我们对函数debugfunc使用debug。这里,我们把函数debug用到名称、参数或者函数上。在这里,不论任何时候调用debugfunc,我们的R控制台都通过每行开始的Browse弹窗进入浏览器模式。
浏览器模式允许我们逐步执行函数运算。我们将一些在调试过程中可能用到的单字母命令归纳为下表。
screenshot

在下面的操作中,我们首先使用help来列出所有的命令。然后我们键入n来进入下一行。接着,我们键入objects和ls列出所有当前的对象。现在,我们可键入变量名来找出每个对象当前的值。最后我们键入Q跳出调试模式,并使用undebug取消对函数的标识。
除了使用函数debug,我们可以在代码中插入函数browser进行调试。当我们给函数debugfunc2插入browser之后,不论何时调用函数,R函数都会直接进入函数browser的下一行。这里,我们可以执行之前命令表中的任何一条命令。如果想在调试框之间跳转,或者回到调试模式的顶层,我们可以使用函数recover。另外,我们可以使用函数trace来给函数插入调试代码。这里,我们把要跟踪的代码指派给debugfunc2,并设定跟踪函数来判断y是否缺失。如果y缺失了,它依然执行函数browser。在参数里,我们设定为4,以便跟踪代码可以在函数debugfunc2的第4行插入。然后,我们调用函数debugfunc2,这个函数直接进入跟踪代码所在的位置,并在参数y缺失的时候执行函数browser。
最后,我们介绍了函数traceback,它可以打印函数的调用堆栈。在这一步中,我们传递两个未指认的参数x和y,给线性模型拟合函数lm。因为我们并没有给这两个参数指派任何值,函数会在控制台的返回错误消息。为了理解调用堆栈序列,我们可以使用函数traceback来打印堆栈。
更多技能
除了使用命令行,我们还可以使用RStudio来调试函数。
1.首先,从Debug下拉菜单中选择Toggle Breakpoint,如图1所示。
2.其次,在行数左边设置断点,如图2的所示。

screenshot

3.然后,保存代码文件并单击Source激活调试过程,如图3所示。

screenshot

4.激活函数的时候,你的R控制台会进入Browse模式,如图4所示。

screenshot

现在你可以使用命令行或者Debug下拉菜单来调试函数,如图5所示。

screenshot

目录
打赏
0
0
0
0
1408
分享
相关文章
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
108 3
R语言函数与自定义函数:提高代码的复用性
【8月更文挑战第27天】 自定义函数是R语言编程中不可或缺的一部分,它们通过封装复杂的逻辑和提供灵活的参数化设计,极大地提高了代码的复用性和可维护性。通过掌握自定义函数的基本语法和高级技巧,我们可以编写出更加高效、可读的R语言代码,从而更好地应对复杂的数据分析和统计建模任务。
|
11月前
|
R语言其他相关函数(各函数解析含实例,可供查询)
R语言其他相关函数(各函数解析含实例,可供查询)
244 0
|
11月前
R语言绘图相关函数(含实例)
R语言绘图相关函数(含实例)
108 0
R语言用非凸惩罚函数回归(SCAD、MCP)分析前列腺数据
R语言用非凸惩罚函数回归(SCAD、MCP)分析前列腺数据
R语言可视化渐近正态性、收敛性:大数定律、中心极限定理、经验累积分布函数
R语言可视化渐近正态性、收敛性:大数定律、中心极限定理、经验累积分布函数
R语言广义二次跳跃、非线性跳跃扩散过程转移函数密度的估计及其应用
R语言广义二次跳跃、非线性跳跃扩散过程转移函数密度的估计及其应用
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。