Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.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
R中的跟踪函数_R_Debugging - Fatal编程技术网

R中的跟踪函数

R中的跟踪函数,r,debugging,R,Debugging,我想跟踪一个函数,以便它在调用时打印所有参数 当它返回结果时,它会打印返回值和参数。 函数跟踪允许定义在进入和退出函数调用时要执行的操作。 是否有函数返回函数中的参数列表,是否有一种方法可以在不执行多个分支的情况下获取结果值 每个分支退出函数的位置 在下面的示例中,跟踪应打印两个输入参数的列表 函数在任何一个分支中退出时的调用和返回值 myfun <- function(a,b){ if (a==1) return(b+1) if (a==2) return(b*10) ret

我想跟踪一个函数,以便它在调用时打印所有参数 当它返回结果时,它会打印返回值和参数。 函数跟踪允许定义在进入和退出函数调用时要执行的操作。 是否有函数返回函数中的参数列表,是否有一种方法可以在不执行多个分支的情况下获取结果值 每个分支退出函数的位置

在下面的示例中,跟踪应打印两个输入参数的列表 函数在任何一个分支中退出时的调用和返回值

myfun <- function(a,b){
  if (a==1) return(b+1)
  if (a==2) return(b*10)
  return(b)
}

myfun只需将其与.trace名称重叠即可

myfun.trace <- function(a,b){
  if (a==1) return({{"a","b"},{a,b}},{b+1})
  if (a==2) return({{"a","b"},{a,b}},{b*10})
return({{"a","b"},{a,b}},{b})    }

myfun.trace您正在查找函数
match.call()
returnValue()

myfun[1]“myfun”
我的乐趣(1,2)
#>在进入时跟踪myfun(1,2)
#> [[1]]
#>我的乐趣
#> 
#>一美元
#> [1] 1
#> 
#>b美元
#> [1] 2
#> 
#>在退出时跟踪myfun(1,2)
#> [1] 3
#> [1] 3
我的乐趣(2,2)
#>进入时跟踪myfun(2,2)
#> [[1]]
#>我的乐趣
#> 
#>一美元
#> [1] 2
#> 
#>b美元
#> [1] 2
#> 
#>在退出时跟踪myfun(2,2)
#> [1] 20
#> [1] 20
我的乐趣(3,2)
#>进入时跟踪myfun(3,2)
#> [[1]]
#>我的乐趣
#> 
#>一美元
#> [1] 3
#> 
#>b美元
#> [1] 2
#> 
#>在出口跟踪myfun(3,2)
#> [1] 2
#> [1] 2
由(v0.2.1)于2018年10月7日创建

如前所述,在注释中,您还可以使用
quote()
而不是
substitute()

myfun[1]“myfun”
我的乐趣(1,2)
#>在进入时跟踪myfun(1,2)
#> [[1]]
#>我的乐趣
#> 
#>一美元
#> [1] 1
#> 
#>b美元
#> [1] 2
#> 
#>在退出时跟踪myfun(1,2)
#> [1] 3
#> [1] 3
我的乐趣(2,2)
#>进入时跟踪myfun(2,2)
#> [[1]]
#>我的乐趣
#> 
#>一美元
#> [1] 2
#> 
#>b美元
#> [1] 2
#> 
#>在退出时跟踪myfun(2,2)
#> [1] 20
#> [1] 20
我的乐趣(3,2)
#>进入时跟踪myfun(3,2)
#> [[1]]
#>我的乐趣
#> 
#>一美元
#> [1] 3
#> 
#>b美元
#> [1] 2
#> 
#>在出口跟踪myfun(3,2)
#> [1] 2
#> [1] 2
由(v0.2.1)于2018年10月7日创建


有关两者之间差异的说明,请参见。

投票表决结果,但可能
引用
替换
更有意义?(相同的输出)@Moody_mudscapper添加了一条注释,说明两者的输出相同,并提供了一个链接,说明两者之间的差异。