有一个向量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
我的问题是否有其他/更好的实施可以避免使用<<-
?请注意,我不想替换递归,而只是询问是否有更好/更安全的设计?
答案 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