为什么c()在R中的此递归函数中不起作用?

时间:2019-12-09 08:06:55

标签: r function recursion unique

doesn't always do what one would expect

我知道有一个功能“ unique”,其功能与我要创建的功能相似,但是我想创建此功能。 我希望此函数最终返回“结果”,其中包含输入向量的唯一元素。 但是我不知道为什么该函数的结果与我的期望完全不同。 为什么要在结果和新的唯一元素之前合并的c无法正常工作。 请告诉我如何修正我的代码。 谢谢。

1 个答案:

答案 0 :(得分:1)

我认为您所期望的可能类似于以下内容,其中result应该是m_uni的参数:

m_uni <- function(x,result = c()) {
  if (class(x)=='numeric'| class(x)=='character') {
    if (length(x) <= 1){
      return(result)
    } else {
      if (x[length(x)] %in% result) {
        x <- x[-length(x)]
        m_uni(x,result)
      } else {
        result <- c(result,x[length(x)])
        x <- x[-length(x)]
        m_uni(x,result)
      }
    }
  } else {
    return('This function only gets numeric or character vector')
  }
}

如此

> m_uni(x)
[1]  0  4  5 -2
相关问题