Something’s Wrong!

Indications that something’s not right

message: A generic notification/diagnostic message produced by the message function;execution of the function continues

warning: An indication that something is wrong but not necessarily fatal; execution of thefunction continues; generated by the warning function

error: An indication that a fatal problem has occurred; execution stops; produced by the stop function

condition: A generic concept for indicating that something unexpected can occur; programmers can create their own conditions

How do you know that something is wrong with your function?

What was your input?

How did you call the function?

What were you expecting? Output, messages, other results?

What did you get?

How does what you get differ from what you were expecting?

Were your expectations correct in the first place?

Can you reproduce the problem (exactly)?

Debugging Tools in R

The primary tools for debugging functions in R are:

traceback: prints out the function call stack after an error occurs; does nothing if there’s no error

debug: flags a function for “debug” mode which allows you to step through execution of a function one line at a time

browser: suspends the execution of a function wherever it is called and puts the function in debug mode

trace: allows you to insert debugging code into a function a specific places

recover: allows you to modify the error behavior so that you can browse the function call stack

These are interactive tools specifically designed to allow you to pick through a function. There’s also the more blunt technique of inserting print/cat statements in the function.

traceback

> lm(y ~ x)

Error in eval(expr, envir, enclos) : object ’y’ not found

> traceback()

7: eval(expr, envir, enclos)

6: eval(predvars, data, env)

5: model.frame.default(formula = y ~ x, drop.unused.levels = TRUE)

4: model.frame(formula = y ~ x, drop.unused.levels = TRUE)

3: eval(expr, envir, enclos)

2: eval(mf, parent.frame())

1: lm(y ~ x)

debug

> debug(lm)

> lm(y ~ x)

debugging in: lm(y ~ x)

debug: {

ret.x <- x

ret.y <- y

cl <- match.call()

...

if (!qr)

z$qr <- NULL

z

}

Browse[

2]>

Browse[2]> n

debug: ret.x <- x

Browse[2]> n

debug: ret.y <- y

Browse[2]> n

debug: cl <- match.call()

Browse[2]> n

debug: mf <- match.call(expand.dots = FALSE)

Browse[2]> n

debug: m <- match(c("formula", "data", "subset", "weights", "na.action",

"offset"), names(mf), 0L)

recover

> options(error = recover)

> read.csv("nosuchfile")

Error in file(file, "rt") : cannot open the connection

In addition: Warning message:

In file(file, "rt") :

cannot open file ’nosuchfile’: No such file or directory

Enter a frame number, or 0 to exit

1: read.csv("nosuchfile")

2: read.table(file = file, header = header, sep = sep, quote = quote, dec =

3: file(file, "rt")

Selection:

Summary

There are three main indications of a problem/condition: message, warning, error- only an error is fatal

When analyzing a function with a problem, make sure you can reproduce the problem, clearly state your expectations and how the output differs from your expectation

Interactive debugging tools traceback, debug, browser, trace, and recover can be used to find problematic code in functions

Debugging tools are not a substitute for thinking!

欢迎关注:

R Programming week 3-Debugging的更多相关文章

  1. Coursera系列-R Programming第二周

    博客总目录,记录学习R与数据分析的一切:http://www.cnblogs.com/weibaar/p/4507801.html  --- 好久没发博客 且容我大吼一句 终于做完这周R Progra ...

  2. Coursera系列-R Programming第三周-词法作用域

    完成R Programming第三周 这周作业有点绕,更多地是通过一个缓存逆矩阵的案例,向我们示范[词法作用域 Lexical Scopping]的功效.但是作业里给出的函数有点绕口,花费了我们蛮多心 ...

  3. 让reddit/r/programming炸锅的一个帖子,还是挺有意思的

    这是原帖 http://www.reddit.com/r/programming/comments/358tnp/five_programming_problems_every_software_en ...

  4. [R] [Johns Hopkins] R Programming -- week 3

    library(datasets) head(airquality) #按月分組 s <- split(airquality, airquality$Month) str(s) summary( ...

  5. [R] [Johns Hopkins] R Programming 作業 Week 2 - Air Pollution

    Introduction For this first programming assignment you will write three functions that are meant to ...

  6. R Programming week 3-Loop functions

    Looping on the Command Line Writing for, while loops is useful when programming but not particularly ...

  7. R programming, In ks.test(x, y) : p-value will be approximate in the presence of ties

    Warning message: In ks.test(x, y) : p-value will be approximate in the presence of ties   The warnin ...

  8. [R] [Johns Hopkins] R Programming -- week 4

    #Generating normal distribution (Pseudo) random number x<-rnorm(10) x x2<-rnorm(10,2,1) x2 set ...

  9. R Programming week2 Functions and Scoping Rules

    A Diversion on Binding Values to Symbol When R tries to bind a value to a symbol,it searches through ...

随机推荐

  1. win7 32位下安装MySQL出现的---1067系统错误---问题及解决

    每次安装数据库,总是出现这样那样的问题.如今记录下来,供日后參考咯.... 下载的是解压缩-zip版本号的.安装配置教程參照洪哥笔记文章-<MySQL-5.6.13解压版(zip版)安装配置教程 ...

  2. qemu所支持的网卡

    1 命令 -net nic 创建一个network interface card,即创建一个网卡,默认是e1000网卡. 2 qemu所支持的网卡类型 2.1 rtl8139 Realtek 10/1 ...

  3. Interpret bytes as packed binary data

    7.1. struct — Interpret bytes as packed binary data — Python 3.6.5 documentation https://docs.python ...

  4. css3动画应用-音乐唱片旋转播放特效

    css3动画应用-音乐唱片旋转播放特效 核心点: 1.设置图片为圆形居中,使图片一直不停旋转. 2.文字标题(潘玮柏--反转地球)一直从左到右不停循环移动. 3.点击图标,音乐暂停,图片停止旋转:点击 ...

  5. [NOI2018] 归程 可持久化并查集

    题目描述 本题的故事发生在魔力之都,在这里我们将为你介绍一些必要的设定. 魔力之都可以抽象成一个n 个节点.m 条边的无向连通图(节点的编号从 1至 n).我们依次用 l,a描述一条边的长度.海拔. ...

  6. 在Orchard CMS Theme 用代码定义布局Widgets

    因为公司业务需要,经过本人几个月尝试,使用Orchard CMS 开发一个简单的企业门户(地址是http://www.ubof.cn).在刚开始接触Orchard CMS,对于个性化的网页布局不知道怎 ...

  7. svn问题:在eclipse里面使用SVN,怎么实现版本回滚呢?

    共有4个答案 我要回答» JustForFly 回答于 2012-04-27 10:20 举报   想回到SVN服务器端的最新版本就使用 team->还原.. 想回到SVN服务器端的其它版本使用 ...

  8. Local Databases with SQLiteOpenHelper

    Overview For maximum control over local data, developers can use SQLite directly by leveraging SQLit ...

  9. Python之Split函数

    python中的split()函数用来拆分一个字符串,通过指定的分隔符对字符串进行切割,返回切割后的字符串列表list. split()函数用法: str.split(str=' ',num = st ...

  10. request的Content-Type小结

    一.Content-Type定义 Content-Type MediaType,即是Internet Media Type,互联网媒体类型:也叫做MIME类型,在Http协议消息头中,使用Conten ...