R - 如何 "insert" 一个值到填充矩阵的一行

R - how to "insert" a value into a row for a fill-in matrix

编辑

您好,这是一个更可重现的例子。

我有一个大量借鉴此 blogpost 的 R 脚本,我正在尝试对每个模拟的矩阵构造方式进行一些修改。

我对 R 中的 for 循环非常不满意,所以我需要一些帮助来弄明白。

我希望做的是找到一种方法来为某一行(或多行)注入一个值(重新基线)……也许我想多了,遗漏了一些明显的东西?

# starting cash for each "simulation"
principle = 100

#starting inflation assumption
inflation = .05

#starting returns
returns = .02

# number of time units (lets say months)
n.obs = 5

# number of simulations (columns)
n.sim = 5

# time I retire and get access to 401k
  t_retire = 4
    
# amount of money available to be added to my principal at t==t_retire
  retire = 100

# simulate cases - they're all the same in this example
nav = matrix(start.capital, n.obs + 1, n.sim)
for (j in 1:n.obs) {
  nav[j + 1, ] = (nav[j, ] * (1 + returns - inflation))
}

我想编辑此 for 循环以将“退休”值添加到第 (t_retire) = 4 行的现有“原则”。

用最小的例子,我认为这可能是我们想要的:

 nav = matrix(start.capital, n.obs + 1, n.sim)

 for (j in 1:n.obs) { if(j==t_retire){nav[j, ] <- nav[j-1, ] + retire}
    nav[j + 1, ] = (nav[j, ] * (1 + returns - inflation))
 }
 nav
 #----------------------
          [,1]      [,2]      [,3]      [,4]      [,5]
[1,] 100000.00 100000.00 100000.00 100000.00 100000.00
[2,]  97000.00  97000.00  97000.00  97000.00  97000.00
[3,]  94090.00  94090.00  94090.00  94090.00  94090.00
[4,]  94190.00  94190.00  94190.00  94190.00  94190.00
[5,]  91364.30  91364.30  91364.30  91364.30  91364.30
[6,]  88623.37  88623.37  88623.37  88623.37  88623.37

如果这不是所需的修改,那么至少它可以构成澄清的基础。并不是说用单个值的副本填充行的 R 习惯在这里起作用。