使用预定值列表(在 R 中)替换 rnorm() 中的模拟次数(“n”)

问题描述 投票:0回答:1

我正在使用 rnorm(),但我不想用一个变量替换模拟次数“n”,而是希望使用具有一系列值中的预定值的“n”多次执行此操作。 (在我的项目中,我需要执行此操作 11,600 多次,因为有 11,600 多个预定值,我需要使用 rnorm() 来实现 - 但平均值和标准差将是恒定的。为了简化本次讨论的所有内容,我将假设我有 10 个预定值,代表我想要进行的模拟次数。)

单位成本<- rnorm(728, mean = 8403.86, sd = 1000)

我不想仅使用“728”作为模拟次数(“n”),而是希望使用以下一系列值自动迭代替换:728、628、100、150、99、867、934、11、67、 753.(我也想以相同的顺序使用这一系列值 - 而不仅仅是随机使用它们,因为预期输出应该是一个列出使用 n 的预定值的 unit.cost 的数据框。请注意,平均值和SD 是常数。)

我尝试过的:

我是 R 的初学者,所以经过搜索,看起来 for 循环是执行此设置的理想选择?

r iteration simulation
1个回答
0
投票

使用

lapply()
,我们将相同的函数应用于向量的每个元素,然后在列表中返回结果(因此是
l
lapply
):

nstouse <- c(728, 628, 100, 150, 99, 867, 934, 11, 67, 753)

nsout <- lapply(nstouse, rnorm, mean = 8403.86, sd = 1000)

给出:

> str(nsout)
List of 10
 $ : num [1:728] 9168 8497 7782 6304 8711 ...
 $ : num [1:628] 7709 6477 9047 7756 9781 ...
 $ : num [1:100] 9761 7519 8675 8413 9376 ...
 $ : num [1:150] 8378 9830 6052 7293 9908 ...
 $ : num [1:99] 7074 8290 8287 10091 10256 ...
 $ : num [1:867] 8034 9261 9053 8760 10571 ...
 $ : num [1:934] 9351 8425 8199 7613 9412 ...
 $ : num [1:11] 8540 7392 8925 8540 8259 ...
 $ : num [1:67] 8366 7445 9361 9586 7632 ...
 $ : num [1:753] 8637 8854 8402 6992 8878 ...
© www.soinside.com 2019 - 2024. All rights reserved.