У меня проблема с созданием списка для цикла - PullRequest
0 голосов
/ 08 июля 2019

Я хотел бы получить 10 результатов в своем коде, но я получаю только один.

Я пытаюсь, чтобы переменная "число" действовала как 1, 2, 3 ... 10, и получала 10 результатов, но я получаю только один.

это то, что я пробовал до сих пор:

one_to_ten <- c(1:10) for (number in one_to_ten) {
     fluxo_div_primeiro <- c(0.68*((1+0.02)^number))
}
fluxo_div_primeiro

Фактический результат составляет всего 0,82916, но ожидаемый результат будет:

#0.6936,    0.707472, 0.72162144, 0.736053869, 0.750774946, 0.765790445,     
#0.781106254,   0.796728379,    0.812662947 0.828916206

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

fluxo_div_primeiro Держите переменную внутри цикла

0 голосов
/ 08 июля 2019

Проблема в том, что при каждом запуске цикла объект обновляется / заменяется новым выводом. Вместо этого мы инициализируем выходной вектор того же размера, а затем обновляем каждый элемент с индексом «число». Обычно, если это не последовательность, переберите последовательность чисел, но здесь она находится в последовательности, то есть от 1 до 10.

fluxo_div_primeiro <- numeric(10)
one_to_ten <- c(1:10) 
for (number in one_to_ten) {
   fluxo_div_primeiro[number] <- 0.68*((1+0.02)^number)
   }
fluxo_div_primeiro
#[1] 0.6936000 0.7074720 0.7216214 0.7360539 0.7507749 0.7657904 
#[7] 0.7811063 0.7967284 0.8126629 0.8289162

Другим вариантом является инициализация с пустым вектором

fluxo_div_primeiro <- c()

, а затем обновите вектор путем объединения значений с исходным вектором

for (number in one_to_ten) {
   fluxo_div_primeiro <- c(fluxo_div_primeiro, 0.68*((1+0.02)^number))
   }
fluxo_div_primeiro
#[1] 0.6936000 0.7074720 0.7216214 0.7360539 0.7507749 0.7657904 
#[7] 0.7811063 0.7967284 0.8126629 0.8289162

Обратите внимание, что они векторизованы. Итак, нам не нужен цикл

(0.68 * (1 + 0.02) ^ (1:10))
#[1] 0.6936000 0.7074720 0.7216214 0.7360539 0.7507749 0.7657904 
#[7] 0.7811063 0.7967284 0.8126629 0.8289162
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...