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] 1.4 Replace Spaces 替换空格

    1.4 Write a method to replace all spaces in a string with '%20'. You may assume that the string has ...

  2. 20135202闫佳歆--week 8 进程的切换和系统的一般执行过程--学习笔记

    此为个人笔记存档 week 8 进程的切换和系统的一般执行过程 一.进程调度与进程切换 1.不同的进程有不同的调度需求 第一种分类: I/O密集型(I/O-bound) 频繁的进行I/O 通常会花费很 ...

  3. 20135220谈愈敏Linux Book_17

    第17章 设备与模块 关于设备驱动和设备管理的四种内核成分: 设备类型:在所有 Unix 系统中为了统一普通设备的操作所采用的分类. 模块: Linux 内核中用于按需加载和卸载目标码的机制. 内核对 ...

  4. Xml命名空间浅析

    XML实例 在介绍xml命名空间之前,我们先来看段xml代码: <?xml version="1.0" encoding="UTF-8"?> < ...

  5. 从无重复大数组找TOP N元素的最优解说起

    有一类面试题,既可以考察工程师算法.也可以兼顾实践应用.甚至创新思维,这些题目便是好的题目,有区分度表现为可以有一般解,也可以有最优解.最近就发现了一个这样的好题目,拿出来晒一晒. 1 题目 原文: ...

  6. 『方案』《女友十年精华》 ORC 图片 文字识别 详解

    目的需求: 2008年,遇到一本电子书 <女友十年精华> 觉得很美,想 私藏 这些文章: >网络搜索文章 —— 没有找到: >反编译程序 —— 所有文字 都是图片格式(部分文章 ...

  7. 按照需要分别率长宽比导出图片(python 3)

    效率提升的问题 之前朋友需要把大量的图片用分辨率进行区分查找,他说都是打开图片,然后用尺子在屏幕上量......我也是瀑布汗....花的点时间帮他写的小软件,解决这个蛋疼的问题 解决方案 本想用批处理 ...

  8. jQuery ajax - get(),getJSON(),post()方法

    1)       jQuery ajax - get() 方法: $(selector).get(url,data,success(response,status,xhr),dataType) 参数 ...

  9. linux用终端上传文件和文件家到远程的服务器

    文件上传:scp 本地文件地址 root@aifei8.net:/var/www/html/landrover 文件夹上传:1.先进入文件夹目录 2. 执行命令:scp -r . root@aifei ...

  10. Codeforces Round #381 (Div. 2) D. Alyona and a tree 树上二分+前缀和思想

    题目链接: http://codeforces.com/contest/740/problem/D D. Alyona and a tree time limit per test2 secondsm ...