有一个向量 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 ,只是想问是否有更好/更安全的设计?
最佳答案
将 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
关于不使用 <<- 赋值的递归函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19118670/