全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 经管代码库
4740 3
2015-03-04
      写程序难免会出错,有时候一个微小的错误需要花很多时间来调试程序来修正它。所以掌握必要的调试方法能避免很多的无用功。

      基本的除错方法是跟踪重要变量的赋值情况。在循环或条件分支代码中加入显示函数能完成这个工作。例如cat('var',var,'\n')。在确认程序运行正常后,可以将这行代码进行注释。好的编程风格也能有效的减少出错的机会。在编写代码时先写出一个功能最为简单的功能,然后在此基础上逐步添加其它复杂的功能。对输出结果进行绘图或统计汇总也能揭示一些潜在的问题。


      另一种避免出错的方法是尽量使用函数。使用函数能将一个大的程序分解成几个小型的模块。一个函数模块只负责实现某一种功能的实现。这样容易理解程序,而且容易针对各函数的输入、计算、输出分别进行查错调试。R语言中函数的运行不会影响到全局变量,所以使用函数基本上不会有什么副作用。

      但是在使用函数时需要注意的问题是输入参数的不可预测性。未预料到的输入参数会产生奇怪的或是错误的输出,所以在函数起始部分就要用条件语句来检查参数的正确与否。如果输入参数不正确,可以用下面的语句来停止程序执行stop('your message here.')

     对函数进行调试的重要工具是browser(),它可以使我们进入调试模式逐行运行代码。在函数中的某一行插入browser()后,在函数执行时会在这一行暂停中断,并显示一个提示符。此时我们可以在提示符后输入任何R语言的交互式命令进行检查调试。输入n则会逐行运行程序,并提示下一行将运行的语句。输入c会直接跳到下一个中断点。而输入Q则会直接跟出调试模式。

d      ebug()函数和browser()是相似的,如果你认为某个函数,例如fx(x),有问题的话,使用debug(fx(x))即可进入调试模式。它本质上是在函数的第一行加入了browser,所以其它提示和命令都是相同的。其它与程序调试有关的函数还包括:trace(),setBreakpoint(),traceback(),recover()




By 写长城的诗

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2015-11-10 11:07:44
感谢分享
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-11-10 11:51:26
谢谢分享。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-8-12 22:54:33
谢谢分享~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群