在递归函数中使用match.call

问题描述

我想要一个带有数字参数的递归函数。 总体结构如下。我添加is.numeric()检查,因为我的原始函数在要求AP为数字的操作上中断。我的原始函数也不会创建无限循环,但是如果不需要递归,则可以干净地退出(由condition1,condition2,...提供)。

myfun <- function(AP,condition1=TRUE,condition2=FALSE){
  # catch the function call
  fun_call <- match.call()
  print(fun_call$AP)
  if(!is.numeric(AP)){stop("Debug stop")}
  myfun(fun_call$AP)
}

我希望此功能可以永久运行,但会因为fun_call $ AP不再是数字而中断。

myfun(3)
[1] 3
fun_call$AP
fun_call$AP
 Error in myfun(fun_call$AP) : Debug stop 

这可能是因为我不是正确地解析参数,使用match.call()时应该如何获取参数,或者是否有另一种不用参数的方式来获取参数match.call()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)