You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R中按观测配对模拟变量相乘并求和生成数据框的方法

解决R语言中逐元素相乘模拟值并计算总和的问题

步骤1:生成逐元素相乘的模拟乘积列表

要让unit.cost和bldg.size中对应位置的向量逐元素相乘,用Map()函数最直接——它能同时遍历两个列表,把对应位置的元素配对处理:

# 生成每个观测的模拟乘积列表
bldg.cost <- Map(function(x, y) x * y, unit.cost, bldg.size)

Map()会自动把unit.cost的第1个向量和bldg.size的第1个向量逐元素相乘,第2个和第2个配对,以此类推,最终得到和原列表结构一致的bldg.cost列表。

步骤2:计算每个观测的乘积总和并生成数据框

接下来用sapply()遍历bldg.cost列表,对每个向量求和,再把结果转成数据框:

# 计算每个观测的bldg.cost总和
cost_totals <- sapply(bldg.cost, sum)

# 转成数据框,添加观测编号列
result_df <- data.frame(
  观测编号 = seq_along(cost_totals),
  模拟总成本 = cost_totals
)

这样得到的result_df就包含了每个观测对应的模拟总成本,结构清晰方便后续分析。

完整代码示例

把所有步骤整合起来:

# 代表每个观测的模拟次数的数值
simulations <- c(728, 680, 631, 583, 534, 486, 437, 388, 340, 291)

# 使用lapply为每个观测生成模拟序列
unit.cost <- lapply(simulations, rnorm, mean = 8403.86, sd = 1000)
bldg.size <- lapply(simulations, rnorm, mean = 35, sd = 5)

# 生成逐元素相乘的模拟乘积列表
bldg.cost <- Map(function(x, y) x * y, unit.cost, bldg.size)

# 计算总和并生成数据框
cost_totals <- sapply(bldg.cost, sum)
result_df <- data.frame(
  观测编号 = seq_along(cost_totals),
  模拟总成本 = cost_totals
)

# 查看结果
print(result_df)

内容的提问来源于stack exchange,提问作者hadi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 12:57:52