R语言的调试重要性不言而喻,这段时间准备改进一个R的包,但由于接触R时间不长,中间的很多东西不懂,需要重新打包调试,以对里面的很多程序有深入了解,下面从几个方面分享一下我的收获。

1、准备工作

a)R软件的下载http://cran.r-project.org/

b)下载源码包,比如我下载了tsDyn(非线性时间序列)包,http://cran.r-project.org/web/packages/available_packages_by_name.html

c)下载相关软件,这里主要指RStudio(http://www.rstudio.com/)和Revolution REnterprise(http://info.revolutionanalytics.com/free-academic.html,学术版的无需付费,SerialNumber:9369-3314-9053)。

d)如果需要打包,则需下载Rtools工具:http://cran.r-project.org/bin/windows/Rtools/,当然,配套的MikTeX或CteX(备选)用来生成PDF格式的帮助文件。下载地址:http://www.miktex.org/http://www.ctex.org/HomePage

2、开始调试

a)R中的调试(重新打包调试)

如果你准备在R中调试,输入debugOnce(“functionName”)或debug(“functionName”)即可。然后输入函数调用,R会启用调试模式,提示符会由“>”变为”Browse[1]>”,这时敲回车键或“n”(next)即可实现单步调试,按“c”(continue)键跳出当前层次。当然,R中的调试很不爽的地方就是没有图形化的东西,一步一步,无法设置断点(或者用browse()设置断点,非常麻烦)。感觉回到了石器时代。

当然,如果你是不怕麻烦,可在你需要关心的地方写上cat,将关键信息输出,但需要重新打包,安装,每次至少需要5分钟的时间,麻烦(这是我一开始的调试方法),后来看了R编程艺术一书中的调试后,感觉使用其它工具调试是必须的。截图如下:

b)RStudio中的调试

在RStudio中调试可参考:http://www.rstudio.com/ide/docs/debugging/overview,需要0.98.274版本才支持调试。如果仍然不明白,可在Youtube上看Debugging R Applications视频,有三个:

http://www.youtube.com/watch?v=tUfJc24XDzs

http://www.youtube.com/watch?v=-3j466H8GUE

http://www.youtube.com/watch?v=tptSrIYOkpM

当然,需要FQ哦。如果你还不会FQ,请联系我或下载我下载的三个视频。在RStudio中调试优点就是可以图形化的调试,可设置断点,但唯一的缺点就是无法调试函数内部的函数,比如A函数调用了F函数,F函数又调用了G函数,如果你想调试G函数就无能为力了(或许有,但我还不知道)。感觉还是不爽,不过总算回到了计算机年代了,哈哈。

在RStudio中调试自己的程序,只需先将r源文件Source即可,如图:

c)Revolution R Enterprise中的调试

熟悉微软的MS Visual Studio的用户对上面两种方法的调试肯定还是不习惯,不过这种遗憾Revolution R Enterprise 6.2已经弥补了,调试功能强大。可参考下面的视频学习Revolution R Enterprise中的调试。

demo of debuggingin R

视频:http://www.revolutionanalytics.com/demos/revolution-productivity-environment/demo.htm

我调试tsDyn的截图为:

调试时,注意激活的文件不要为tests目录中的文件,最好为模型源码文件,比如lstar.r文件,否则调试进入不了里面的函数。

注意,如果报没有embedd函数的错误,请不要紧张,加载tseriesChaos包即可。

文章来源:

http://bbs.pinggu.org/forum.php?mod=viewthread&tid=2599706&page=1

如何调试R程序(转载)的更多相关文章

  1. 如何在windows中编写R程序包(转载)

    网上有不少R包的编译过程介绍,挑选了一篇比较详细的,做了稍许修改后转载至此,与大家分享 如何在windows中编写R程序包 created by helixcn modified by binaryf ...

  2. 用GDB 调试Java程序

      陈皓 http://blog.csdn.net/haoel 背景 想要使用GDB调试程序,就需要用GNU的编译器编译程序.如:用GCC编译的C/C++的程序,才能用GDB调试.对于Java程序也是 ...

  3. Gdb调试多进程程序

    Gdb调试多进程程序 程序经常使用fork/exec创建多进程程序.多进程程序有自己独立的地址空间,这是多进程调试首要注意的地方.Gdb功能强大,对调试多线程提供很多支持. 方法1:调试多进程最土的办 ...

  4. PDB调试Python程序

    pdb是python内置的调试工具, 它可以在终端中调试Python程序, 这允许pdb在很多无法安装IDE的服务器上使用. 虽然远程调试使用广泛, 但在必要的时候(比如难以在本地搭建运行环境)pdb ...

  5. 【php】使用gdb调试php程序

    1.简介 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC.BCB的图形化调试器更强大的功能.同时GDB也具有例如d ...

  6. 使用gdb调试多线程程序总结

    转:使用gdb调试多线程程序总结 一直对GDB多线程调试接触不多,最近因为工作有了一些接触,简单作点记录吧. 先介绍一下GDB多线程调试的基本命令. info threads 显示当前可调试的所有线程 ...

  7. Debugging with GDB 用GDB调试多线程程序

    Debugging with GDB http://www.delorie.com/gnu/docs/gdb/gdb_25.html GDB调试多线程程序总结 一直对GDB多线程调试接触不多,最近因为 ...

  8. gdb调试多线程程序总结

    阿里核心系统团队博客 http://csrd.aliapp.com/?tag=pstack Linux下多线程查看工具(pstree.ps.pstack) http://www.cnblogs.com ...

  9. 谈使用Eclipse与DDMS调试Android程序的方法

    在Eclipse开发工具中调试程序的方法很多,但是使用Eclipse调试Android程序时需要注意一些细节上的问题.许多刚接触 Android的开发者,在调试Android程序时总是不能迅速地找到程 ...

随机推荐

  1. 学习Shell脚本编程(目录)

    所涉及的内容如下: Shell命令行的运行 编写.修改权限和执行Shell程序的步骤 在Shell程序中使用参数和变量 表达式比较.循环结构语句和条件结构语句 在Shell程序中使用函数和调用其他Sh ...

  2. JavaScript系列:《JavaScript高级程序设计》,chapter2, 在html中使用JavaScript

    2.1.2 延迟脚本     指的是defer属性,且只适用于外部脚本,也就是有defer属性的脚本.     由于各种延迟浏览器对延迟脚本的支持不统一,且在html5之后也不再支持defer属性,所 ...

  3. [CareerCup] 7.2 Ants on Polygon 多边形上的蚂蚁

    7.2 There are three ants on different vertices of a triangle. What is the probability of collision ( ...

  4. 各种python环境的问题

    [OS] mac [ERROR] decoder jpeg not available [SOLUTION] $ pip uninstall pillow $ brew install libjpeg ...

  5. C# GC 垃圾回收机制

    今天来谈谈C# 的GC ,也就是垃圾回收机制,非常的受教,总结如下 首先:谈谈托管,什么叫托管,我的理解就是托付C# 运行环境帮我们去管理,在这个运行环境中可以帮助我们开辟内存和释放内存,开辟内存一般 ...

  6. 斯坦福机器学习实现与分析之八(kmeans算法)

    Kmeans算法简介 作为无监督学习领域的一种简单的算法,Kmeans在实际应用中却是相当广泛的.其过程是通过不断交替迭代求得最优的类中心以及每个样本所属类别,具体步骤如下: 确定类别个数k 随机初始 ...

  7. ThinkPHP之项目搭建

    前言 在做javaweb开发时,我们创建一个项目,MyEclipse会自动为我们生成相应的目录结构,我们在此结构上才进行web开发,在使用TinkPHP框架做PHP开发时,一样,我们如何生成一个标准的 ...

  8. Java Web整合开发实战:基于Struts 2+Hibernate+Spring 目录

    第1篇 Java Web开发基础第1章 Web的工作机制( 教学视频:31分钟) 1.1 理解Web的概念 1.1.1 Web的定义 1.1.2 Web的三个核心标准 1.2 C/S与B/S两种软件体 ...

  9. Java编程思想学习(十) 正则表达式

    正则表达式是一种强大的文本处理工具,使用正则表达式我们可以以编程的方法,构造复杂的文本模式,并且对输入的字符串进行搜索.在我看来,所谓正则表达式就是我们自己定义一些规则,然后就可以验证输入的字符串是不 ...

  10. 一个项目中哪些文件是要上传到 git上的,哪些是不必要的