#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
для вычисления совокупной суммы.