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
(输入值的向量)。然后注意b
是a
的累加和。
试一试:
t <- 1:20
a <- ((-1)^(t-1))/(t)
b <- cumsum(a)
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
(输入值的向量)。然后注意b
是a
的累加和。
试一试:
t <- 1:20
a <- ((-1)^(t-1))/(t)
b <- cumsum(a)