R递归函数调用,无需声明函数参数

时间:2018-02-28 13:42:59

标签: r recursion arguments call

以下简单递归在向量中查找重复的元素。它取自Thomas Mailund的第二章功能编程R:高级统计编程数据科学,分析和财务。我想知道为什么当我们在函数内部调用rest时它会起作用,因为它在没有声明参数的情况下调用函数。

通常这只会返回函数定义,但在递归函数中我们不需要,我想知道为什么。

如果我们直接用rest替换函数中的find_duplicates(x, i + 1),我可以看到这是如何工作的,但是我很难理解为什么它只调用函数附加的名称。< / p>

例如,如果我们定义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
}

1 个答案:

答案 0 :(得分:0)

rest不是函数,它是函数find_duplicates的输出,给定参数xi+1

所以确实在rest子句中输入find_duplicates(x, i + 1)if是一样的,它们都是值,而不是函数。