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 习惯在这里起作用。
编辑
您好,这是一个更可重现的例子。
我有一个大量借鉴此 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 习惯在这里起作用。