不使用<< - 赋值?的递归函数?

时间:2013-10-01 14:19:28

标签: r recursion

有一个向量x,我需要在内部函数中递归地改变它。这里我使用<<-全局赋值运算符实现了这个:

 outer <- function(){
  x <- rep(1,5)
  inner <- function(i){
    if(i> length(x))return(x)
    x[i] <<- 2  ## don't work with <-
    inner(i+1)
  }
  inner(1)
}
outer()
[1] 2 2 2 2 2

我的问题是否有其他/更好的实施可以避免使用<<-?请注意,我不想替换递归,而只是询问是否有更好/更安全的设计?

1 个答案:

答案 0 :(得分:3)

x作为参数传递?

outer <- function(){
  x <- rep(1,5)
  inner <- function(i,x){
    if(i> length(x))return(x)
    x[i] <- 2  
    inner(i+1,x)
  }
  inner(1,x)
}
outer()
#[1] 2 2 2 2 2