我想在代码中包含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
答案 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 在循环中保留变量