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. [CareerCup] 13.8 Smart Pointer 智能指针

    13.8 Write a smart pointer class. A smart pointer is a data type, usually implemented with templates ...

  2. Material Design For Xamarin.Forms

    最近,升级 Xamarin.Forms 到最新版本后,发现Droid 项目下引入了以下几个依赖包: Xamarin.Android.Support.DesignXamarin.Android.Supp ...

  3. org.springframework.dao.TransientDataAccessResourceException: PreparedStatementCallback.....Parameter index out of range (1 > number of parameters, which is 0).;

    sql有误,一般是   sql语句少了问号.

  4. 嵌入式linux驱动开发之点亮led(驱动编程思想之初体验)

    这节我们就开始开始进行实战啦!这里顺便说一下啊,出来做开发的基础很重要啊,基础不好,迟早是要恶补的.个人深刻觉得像这种嵌入式的开发对C语言和微机接口与原理是非常依赖的,必须要有深厚的基础才能hold的 ...

  5. Bootstrap系列 -- 27. 下拉菜单对齐方式

    Bootstrap框架中下拉菜单默认是左对齐,如果你想让下拉菜单相对于父容器右对齐时,可以在“dropdown-menu”上添加一个“pull-right”或者“dropdown-menu-right ...

  6. cryptDB安装分析

    cryptDB的安装脚步是用ruby语言写的,由于这里对ruby语言不熟悉,只能做简答的分析.我们先看看cryptDB的目录结构. 主要的目录有bins.doc.main.udf目录,下面我们通过分析 ...

  7. 5、面向对象以及winform的简单运用(方法重载、隐藏、重写与虚方法)

    方法的重载: 规定一个方法可以具有不同的实现,但方法的名称是相同的.如: //同样是Man这个方法 public int Man(int age,int name) { …… } //重载 publi ...

  8. ECMAScript —— 学习笔记(思维导图版)

    导图

  9. 每天一个linux命令(28):diff 命令

    diff 命 令是 linux上非常重要的工具,用于比较文件的内容,特别是比较两个版本不同的文件以找到改动的地方.diff在命令行中打印每一个行的改动.最新版 本的diff还支持二进制文件.diff程 ...

  10. websocket在.net4.5中实现的简单demo

    以下代码环境要求:win8或win10, .net4.5+IIS8 win7上是IIS7,win7上.net本身不直接支持websocket, win7可以用superwebsocket, 或自己根据 ...