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

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

我正在使用

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

unit.cost <- rnorm(n=728, mean = 8403.86, sd = 1000)

我不想仅使用“728”作为模拟数量(

n
),而是想使用这一系列值自动迭代替换:
728, 628, 100, 150, 99, 867, 934, 11, 67, 753
。 (我还想以相同的顺序使用这一系列值 - 而不仅仅是随机使用它们,因为预期输出应该是一个使用 n 的预定值列出 unit.cost 的数据框。请注意,
mean
sd
是恒定的。)

经过搜索,看起来

for
循环是执行此设置的理想候选者?

r iteration simulation
1个回答
2
投票

使用

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

rnorm
接受参数
rnorm(n, mean = 0, sd = 1)
- 我们希望您的值向量填充
n
参数,因此我们指定
mean
sd
:

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.