Простой цикл For для печати частичных сумм бесконечной последовательности дает ошибку: замена имеет нулевую длину - PullRequest
1 голос
/ 28 июня 2019

Простая проблема в 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]: длина замены равна нулю </p>

Ответы [ 2 ]

1 голос
/ 28 июня 2019

Большая сила R исходит от векторизации.Здесь нет необходимости в for петлях.Вы можете применить свою формулу непосредственно к t (вектор входных значений).Затем обратите внимание, что b - это совокупная сумма a.

Просто попробуйте:

t <- 1:20
a <- ((-1)^(t-1))/(t)
b <- cumsum(a)
1 голос
/ 28 июня 2019

Два изменения: -

1) Использовать другую переменную в for loop

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...