R语言 调试

R语言 调试

调试是一个清理程序代码中的错误以使其成功运行的过程。在编写代码时,一些错误或问题会在代码编译后自动出现,而且更难诊断。因此,修复它需要大量的时间,而且要经过多层次的调用。

R语言的调试是通过警告、信息和错误进行的。R中的调试是指调试函数。各种调试功能有。

  • 编辑器断点
  • traceback()
  • browser()
  • recover()

编辑器断点

编辑器断点可以在RStudio中添加,方法是在RStudio中点击行的左边或在光标在行上按下 Shift+F9 。断点与 浏览器() 相同,但它不涉及改变代码。断点在左边用一个红色的圆圈表示,表示源代码运行后将在这一行进入调试模式。

R编程中的调试

traceback()函数

traceback() 函数用来给出你的函数如何到达错误的所有信息。它将显示在错误发生前调用的所有函数,称为 “调用堆栈 “,在许多语言中,R偏爱调用回溯。

例子

# Function 1
function_1 <- function(a){
 a + 5
}
  
# Function 2
function_2 <- function(b) {
 function_1(b)
}
  
# Calling function
function_2("s")
  
# Call traceback()
traceback()
R

输出。

2: function_1(b) at #1
1: function_2("s")
R

traceback() 函数显示评估过程中的错误。调用堆栈从被运行的函数(在底部)读到正在运行的函数(在顶部)。我们也可以使用 traceback() 作为一个错误处理程序,它将立即显示错误而不调用traceback。

# Function 1
function_1 <- function(a){
 a + 5
}
  
# Function 2
function_2 <- function(b){
 function_1(b)
}
  
# Calling error handler
options(error = traceback)
function_2("s")
R

输出。

Error in a + 5 : non-numeric argument to binary operator
2: function_1(b) at #1
1: function_2("s")
R

browser() 函数

browser()函数被插入到函数中以打开R的交互式调试器。它将停止函数()的执行,你可以用函数本身的环境来检查它。在调试模式下,我们可以修改对象,查看当前环境中的对象,还可以继续执行。

例如:
R编程中的调试

browser[1]> 控制台中的命令确认你处于调试模式。一些命令可以遵循。

  • ls(): 当前环境中可用的对象。
  • print()。来评估对象。
  • n: 检查下一条语句。
  • s: 通过步入函数调用来检查下一条语句。
  • where: 打印一个堆栈跟踪。
  • c: 离开调试器,继续执行。
  • C: 退出调试器,回到R提示符。

另外, debug() 语句会自动在函数的开头插入 browser() 语句。

recover()函数

recover() 语句是作为一个错误处理程序使用的,而不是像直接语句那样。在 recover() 中,R打印出整个调用堆栈,并让你选择你想进入的函数浏览器。然后在选定的位置开始调试会话。

例子

# Calling recover
options(error = recover)
  
# Function 1
function_1 <- function(a){
 a + 5
}
  
# Function 2
function_2 <- function(b) {
 function_1(b)
}
  
# Calling function
function_2("s")
R

输出。

Enter a frame number, or 0 to exit   

1: function_2("s")
2: #2: function_1(b)

Selection: 
R

调试会话在选定的位置开始。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册