Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Debugging 在R中运行和调试脚本和函数_Debugging_R - Fatal编程技术网

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

Debugging 在R中运行和调试脚本和函数,debugging,r,Debugging,R,我是个新手。我有一个R文件,包含一个带参数的函数。 我想执行以下两个不同的操作: 运行函数 一步一步地执行并调试它 假设在R文件中有一个简单的函数 "exampleSum"<- function(x,y){ x<-x+1 return(x+y) } “exampleSum”首先需要将函数加载到R的工作区(通过复制/粘贴到R)。然后,您可以使用exampleSum(x=1,y=1)运行它。您可以通过在R控制台中键入exampleSum来检查它是否存在。您还可以使用source()

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

  • 运行函数
  • 一步一步地执行并调试它
  • 假设在R文件中有一个简单的函数

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

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


    我想至少通过阅读你会受益匪浅。对于R初学者来说,也有大量的书可以用来解释基础知识。上述AI2R和互联网上的免费资料中提供了同等信息。搜索列表也是。。。有用。

    您必须调用
    debug()
    来逐步完成函数。下次调用函数时,将自动打开所谓的浏览器环境并列出函数的内容。按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
    
    >exampleSum exampleSum(1,2)#在浏览器模式下运行函数
    在中调试:exampleSum(1,2)
    调试:{
    x n#下一步
    调试:x ls()#显示对象
    [1] “x”“y”
    浏览[2]>x#显示x
    [1] 1
    浏览[2]>c#运行函数结束
    退出:exampleSum(1,2)
    [1] 4
    >undebug(exampleSum)#删除调试标志
    

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

    debugonce
    在您只需进行一次检查时也很有用。如果要运行接下来的100行怎么办?别忘了仔细阅读
    ?debug
    ?browser
    的帮助页面。