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

标签 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

我的问题是否有另一个/更好的实现可以避免使用 <<- ?请注意,我不想替换 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/

相关文章:

r - 自动调整使用 ggplot2 绘制的图例的大小,使整个图例位于图层的边界内

java - 设计递归时遇到问题,结果有限

python - 使用Python创建递归拓扑树

r - 当 x 发生时如何将 tibble 从日期表转换为具有 x 的分类数据的日期表

c - 如何在 c 中解决具有许多不同级别(它们是递归的)的问题

python - 如何在 Python 2.7 中实现迭代函数的递归函数?

amazon-web-services - k8s 使用 OwnerRef 获取集群中的所有 pod 层次结构

json - 写入/读取递归结构 S4 对象

r - R中年度断点的计算

r - R 中 S4 对象的总和