用手段向量调用rnorm

BBD*_*Sys 16 statistics r normal-distribution vector

当我调用rnorm单个值作为均值时,很明显会发生什么:从Normal(10,1)生成一个值.

y <- rnorm(20, mean=10, sd=1)
Run Code Online (Sandbox Code Playgroud)

但是,我看到传递给整个矢量的例子rnorm(或rcauchy等等); 在这种情况下,我不确定R机器到底做了什么.例如:

a = c(10,22,33,44,5,10,30,22,100,45,97)
y <- rnorm(a, mean=a, sd=1)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

csg*_*pie 13

rnorm生成的随机数的数量等于a的长度.来自?rnorm:

n:观察次数.如果'length(n)> 1',则长度取为所需的数量.

要查看a传递给均值参数时发生的情况,如果我们更改示例会更容易:

a = c(0, 10, 100)
y = rnorm(a, mean=a, sd=1)
[1] -0.4853138  9.3630421 99.7536461
Run Code Online (Sandbox Code Playgroud)

所以我们length(a)用均值生成随机数a[i].


小智 5

一个更好的例子:

a <- c(0,10,100)
b <- c(2,4,6)
y <- rnorm(6,a,b)
y
Run Code Online (Sandbox Code Playgroud)

结果

[1]  -1.2261425  10.1596462 103.3857481  -0.7260817   7.0812499  97.8964131
Run Code Online (Sandbox Code Playgroud)

如您所见,对于y的第一个和第四个元素,rnorm将a的第一个元素作为平均值,将b的第一个元素作为sd

对于y的第二个和第五个元素,rnorm将a的第二个元素作为平均值,将b的第二个元素作为sd

对于y的第三个和第六个元素,rnorm将a的第三个元素作为平均值,将b的第三个元素作为sd

您可以在rnorm的第一个参数中尝试不同的数字,看看发生了什么

例如,如果您在调用rnorm时使用 5 而不是 6 作为第一个参数,会发生什么?