Мне нужен цикл, который может добавлять значение к моему начальному значению только за несколько итераций

#r

#r

Вопрос:

Мне нужен цикл из 32 лет, который проверит, равен ли текущий год (скажем, кратному 4), и если да, то добавит значение к интересующему меня значению

Я пробовал использовать ifelse, но я не думаю, что я действительно понимаю, как работает функция.

 result <- rbind(c(t,Na))
Na <- 10
for (t in 1:32){
  ifelse(t=c(4,8,12,16,20,24,28,32),(Na <- Na ((t/4)*20)),(Na <- Na))
  result <- rbind(result,round(c(t,Na),2))
}
  

Комментарии:

1. Я полагаю, что вы думаете об этом неправильно. На вашем месте я бы изучил оператор модуля %% , чтобы определить, какие числа можно разложить на множители

2. Пример Ifelse: результат <- ifelse(some_condition, значение 1, значение-1). Допустим, значение <- 1. Если some_condition == TRUE, результаты будут равны 2. Если some_condition == FALSE, результаты будут равны 0

3. Взгляните на то, как логические операторы ( %in% , == , > и т.д.) Используются в R

Ответ №1:

Если вы хотите не использовать цикл for, вы могли бы поступить следующим образом (непроверенный):

 t <- 1:32
idx <- which(t %% 4==0)
Na <- rep(10,32)
Na[idx] <- Na[idx] 20*t[idx]/4
result <- cbind(t, cumsum(Na))
  

Вторая строка фильтрует индексы тех компонентов, которые нуждаются в специальной обработке. Третья строка создает вектор длиной 32 со всеми компонентами, равными 10. В четвертой строке применяется специальная обработка. Последняя строка использует cumsum для вычисления совокупной суммы.