2

有一个向量 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

我的问题是是否有另一个/更好的实现可以避免使用 <<-?请注意,我不想替换 recursion ,只是想问是否有更好/更安全的设计?

4

1 回答 1

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
于 2013-10-01T14:35:39.593 回答