r - 执行模拟时如何指定结果的存储位置?
问题描述
我目前正在执行下面的模拟。我做过一次,希望能重复 100 次。但是,在 100 次模拟中,我得到的结果与第 100 次相同。我很难知道 for 循环结果的存储位置或方式。我是 R 中的一个大人物,所以完全不知道我下面的代码有什么问题。
#### Repeating the simulation for 100 times
nsims= 100
incomes_priv = matrix(NA, 36, nsims)# store priv income results
incomes_pub=matrix(NA,36, nsims)#to store pub income results
savings_priv= matrix(NA, 36, nsims)#to store savings from priv
savings_public=matrix(NA,36 ,nsims)#to store savings from pub
set.seed(500)
for (j in 1:nsims){{
print(j)
for(i in 1:36){incomes_pub100= rnorm(36 ,29200, 10000)
income_priv100=rnorm(36,25500, 17000)
saved_pub100=prop.saved *income_pub100
saved_pri100=prop.saved *income_priv100}
incomes_pri <- incomes_priv100
incomes_pub<- income_pub100
savings_priv <- saved_pri100
savings_pub<- saved_pub100
}
解决方案
您没有在这些矩阵中索引您希望存储结果的位置,因此您每次都在覆盖它们。尝试:
#### Repeating the simulation for 100 times
nsims = 100
incomes_priv = matrix(NA, 36, nsims) # store priv income results
incomes_pub = matrix(NA, 36, nsims) # to store pub income results
savings_priv = matrix(NA, 36, nsims) # to store savings from priv
savings_pub = matrix(NA, 36, nsims) # to store savings from pub
prop.saved = .1
set.seed(500)
for(j in 1:nsims){
print(j)
for(i in 1:36){
income_pub100 = rnorm(1, 29200, 10000)
income_priv100 = rnorm(1, 25500, 17000)
saved_pub100 = prop.saved *income_pub100
saved_pri100 = prop.saved *income_priv100
incomes_priv[i,j] <- income_priv100
incomes_pub[i,j] <- income_pub100
savings_priv[i,j] <- saved_pri100
savings_pub[i,j] <- saved_pub100
}
}
关键是我添加[i,j]
了指示结果应该存储在每个矩阵中的哪个位置。这样,您不会在每次通过循环时覆盖矩阵。(我还清理了很多代码,例如不匹配的大括号,并使代码在视觉上更好地排序。)
推荐阅读
- python - 在 python 中获取 FFT 波形以匹配 Adobe Audition 频率分析
- excel - 如何使用按钮隐藏/取消隐藏列?
- java - 使用布尔错误检查方法写入 LinkedList 会在另一个参数为整数的函数中显示错误
- javascript - 有没有办法为 JS(任何环境)创建转储并稍后恢复/调试它(可能在其他机器上)?
- django - 我应该在哪里设置从表单字段派生的模型字段?
- javascript - 如何使用自定义对象作为 TypeScript 地图中的键?
- c - 为什么调用本地函数需要重定位?
- python - Python - 根据多索引 DF 中的最大日期创建列
- .htaccess - .htaccess 规则:将参数映射到文件夹
- stored-procedures - 查询失败时如何将 query_id 和 query_text 插入日志表