微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在递归函数中使用match.call

如何解决在递归函数中使用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 举报,一经查实,本站将立刻删除。