在R中运行和调试脚本和函数

时间:2010-12-29 05:17:40

标签: debugging r

我是新手。我有一个R文件,包含一个带参数的函数。 我想执行以下两个不同的操作:

  1. 运行功能
  2. 逐步执行并调试
  3. 假设在R文件中有一个简单的函数

    "exampleSum"<-
    function(x,y){
     x<-x+1
     return(x+y)
    }
    

    你能告诉我哪些R命令可以执行我的要求。

2 个答案:

答案 0 :(得分:27)

您必须致电debug(<functionName>)来逐步执行某项功能。下次调用该函数时,将自动打开所谓的浏览器环境并列出函数的内容。按Return键或使用n命令(下一步)执行一步。单步是一个块(通常是一行),它将在它运行之前列出。要将功能运行到最后,请按c(继续)。当您处于浏览器模式时,可以使用ls()str()class(),...来检查对象。您的示例如下所示:

> exampleSum <- function(x, y) {
+   x <- x+1
+   return(x+y)
+ }

> debug(exampleSum)             # set debug flag
> exampleSum(1, 2)              # run function in browser mode
debugging in: exampleSum(1, 2)
debug: {
    x <- x + 1
    return(x + y)
}
Browse[2]> n                    # next step
debug: x <- x + 1
Browse[2]> ls()                 # show objects
[1] "x" "y"
Browse[2]> x                    # show x
[1] 1
Browse[2]> c                    # run function to end
exiting from: exampleSum(1, 2)
[1] 4

> undebug(exampleSum)           # remove debug flag

undebug(<functionName>)的最后一次调用会从函数中删除调试标志,以便下次调用时它将正常运行。

答案 1 :(得分:1)

首先需要将函数加载到R的工作区(通过将其复制/粘贴到R)。然后,您可以使用exampleSum(x = 1, y = 1)运行它。您可以通过在R控制台中键入exampleSum来检查它是否在那里。您还可以使用source()运行脚本文件。使用示例为source("d:/R/my_script.R")

我认为至少阅读An Introduction to R会使你受益匪浅。 R初学者也有很多书可以解释这些基础知识。上述AI2R中提供了等效信息,互联网上有免费资料。搜索R help列表也很有帮助。