我在使用for循环创建列表时遇到问题

时间:2019-07-07 21:38:15

标签: r loops for-loop

我想在代码中包含10个结果,但是我只收到一个。

我正在尝试让变量“ number”的作用类似于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 :(得分:0)

问题在于,在每次循环运行中,对象都将由新输出更新/替换。取而代之的是,我们初始化大小相同的输出向量,然后使用索引“ number”更新每个元素。通常,如果不是序列,则循环遍历数字序列,但这里是序列,即从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

答案 1 :(得分:0)

fluxo_div_primeiro 在循环中保留变量