R语言仿真模拟代码运行时month_cost_vec向量存在NA值问题求助
错误原因
你编写的月度成本计算、month_cost_vec向量赋值逻辑全部放在了for循环的外部,执行流程如下:
- for循环迭代过程中,仅会每次生成
perc_machines_down、time_spent、var_costs三个变量,新的迭代会直接覆盖上一轮的变量值,不会做任何计算存储操作 - 当for循环完全执行结束后,迭代变量
i的值为5000,此时仅会用最后一轮迭代生成的三个变量值计算总成本,也只会给month_cost_vec的第5000位赋值,剩下4999个位置都会保留初始的NA值。
修正方案
把成本计算、向量赋值的代码全部移入for循环的大括号内部即可,修正后代码如下:
sim_times = 5000 month_cost_vec = rep(NA,sim_times) n_machines = 100 labor_cost = 28 fixed_cost = 120 set.seed(0) for (i in 1:sim_times) { perc_machines_down = sample(x=c(.08,.09,.1,.11,.12,.13), size = 1, replace = TRUE, prob = c(.3,.22,.2,.13,.12,.03)) time_spent = sample(x=c(1,2,3,4), size = 1, replace = TRUE, prob = c(.25,.25,.25,.25)) var_costs = rnorm(n=1,mean = 80,sd = 20) # 成本计算、赋值逻辑移入循环内部 monthly_cost_of_labor = (n_machines*perc_machines_down)*(labor_cost*time_spent) monthly_fixed_cost_of_replacement_parts = (n_machines*perc_machines_down)*fixed_cost monthly_variable_cost_of_replacement_parts = (n_machines*perc_machines_down)*var_costs monthly_total_repair_costs = monthly_cost_of_labor + monthly_fixed_cost_of_replacement_parts + monthly_variable_cost_of_replacement_parts month_cost_vec[i] = monthly_total_repair_costs }
内容的提问来源于stack exchange,提问作者Mikez
相关产品推荐
相关产品推荐

