我正在使用
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
循环是执行此设置的理想候选者?
使用
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 ...