我的R for循环总结了一个系列有什么问题?

col*_*son 1 loops for-loop r sum

这是我的函数循环:

answer = function(a,n) {
  for (k in 0:n) {
    x =+ (a^k)/factorial(k)
    }
  return(x)
  }
Run Code Online (Sandbox Code Playgroud)

answer(1,2) 应该返回2.5,因为它是计算值

1 ^ 0/0!+ 1 ^ 1/1!+ 1 ^ 2/2!= 1 + 1 + 0.5 = 2.5

但我明白了

answer(1,2)
#[1] 0.5
Run Code Online (Sandbox Code Playgroud)

看起来它无法累积所有三个术语,每次只存储最新值.+=不起作用所以我用过,=+但它仍然不对.谢谢.

李哲源*_*李哲源 5

answer = function(a,n) {
  x <- 0  ## initialize the accumulator
  for (k in 0:n) {
    x <- x + (a^k)/factorial(k)  ## note how to accumulate value in R
    }
    return(x)
  }

answer(1, 2)
#[1] 2.5
Run Code Online (Sandbox Code Playgroud)

有"矢量化"解决方案:

answer = function(a,n) {
  x <- a ^ (0:n) / factorial(0:n)
  return(sum(x))
  }
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您不需要初始化任何内容.R将分配背后存储器<-sum.

您正在使用泰勒展开来近似exp(a).请参阅主题的问答.您可能需要特别注意我的答案中提到的"数值收敛"问题.