A simple For loop to print partial sums of infinite sequence gives error: replacement has length zero

A simple For loop to print partial sums of infinite sequence gives error: replacement has length zero

R 中使用 For 循环计算无限序列的部分和的一个简单问题是 运行 错误。

t <- 2:20
a <- numeric(20)  # first define the vector and its size
b <- numeric(20)

a[1]=1
b[1]=1 

for (t in seq_along(t)){  
       a[t] = ((-1)^(t-1))/(t) # some formula
       b[t] = b[t-1]+a[t]        
}
b

Error in b[t] <- b[t - 1] + a[t] : replacement has length zero

两个变化:-

1) 在 for 循环中使用不同的变量

2) 不要使用 seq_along 因为 t 已经有你想要迭代的索引

for (i in t){  
  a[i] = ((-1)^(i-1))/(i) # some formula
  b[i] = b[i-1]+a[i]        
}

此外,t 不是一个好的变量名,因为它是 R 中的一个函数

R 的很大一部分功能来自矢量化。这里不需要 for 循环。您可以直接将公式应用于 t(输入值的向量)。然后注意ba的累加和。

试一试:

t <- 1:20
a <- ((-1)^(t-1))/(t)
b <- cumsum(a)