R递归函数调用,无需声明函数参数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R递归函数调用,无需声明函数参数相关的知识,希望对你有一定的参考价值。
以下简单递归在向量中查找重复元素。它来自Thomas Mailund的R:高级统计编程数据科学,分析和财务中的第2章功能编程。我想知道为什么它在我们在函数内部调用rest
时有效,因为它调用函数时没有声明参数。
通常这只会返回函数定义,但在递归函数中我们不需要,我想知道为什么。
如果我们直接用rest
替换函数中的find_duplicates(x, i + 1)
,我可以看到它是如何工作的,但是我很难理解它为什么只调用函数附加的名称。
例如,如果我们定义f<- function (x) x
并调用f
它只返回代码function (x) x
。
find_duplicates <- function(x, i = 1) {
if (i >= length(x)) return(c())
rest <- find_duplicates(x, i + 1)
if (x[i] == x[i + 1]) c(i, rest)
else rest
}
答案
rest
不是一个函数,它是函数find_duplicates
的输出给出参数x
和i+1
。
确实,在rest
条款中键入find_duplicates(x, i + 1)
或if
也是一样的,它们既是价值,也是功能。
以上是关于R递归函数调用,无需声明函数参数的主要内容,如果未能解决你的问题,请参考以下文章