和其他语言一样你自然可以通过print一些参数之类的方法进行debug,但是R或RStudio提供的一些代码调试工具还是能为你提供一些有用的尝试。
这些工具包括:traceback、browser、debug、debugonce、trace和recover函数。
一般debug包括两个步骤,首先是定位代码错误发生的位置,然后是找出代码发生错误的原因并解决
其中第一步可以借助traceback函数来完成
traceback
traceback函数可以帮助你精确定位错误。很多R函数之间都会存在互相调用的情况,如何确定出错的函数往往是个难题。
first<-function()second()
second<-function()third()
third<-function()fourth()
fourth<-function()fifth()
fifth<-function()bug()
上述函数都在调用下一个函数(除了最后一个函数)
由于bug函数不存在,运行first()将会报错
Error in bug() : could not find function "bug"
这里由于函数关系简单我们很容易就知道了错误的原因,但很多时候你根本不知道出错的函数是什么地方为什么被调用的,此时traceback()可以看到出错之前R函数调用的路径,并返回一个调用栈(call stack),即调用函数的有序列表。
> traceback()
5: fifth() at #1
4: fourth() at #1
3: third() at #1
2: second() at #1
1: first()