1

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

b[t] <- b[t - 1] + a[t] 中的错误:替换的长度为零

4

2 回答 2

1

两个变化:-

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

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 中的一个函数

于 2019-06-28T12:14:00.803 回答
1

R 的强大功能来自矢量化。这里不需要for循环。您可以将公式直接应用于t(输入值的向量)。然后注意b是 的累积和a

你试一试:

t <- 1:20
a <- ((-1)^(t-1))/(t)
b <- cumsum(a)
于 2019-06-28T12:24:48.527 回答