以下行从正态分布产生1000个随机抽取,平均值为0,sd为1。
rnorm(1000,0,1)
## [1] -0.3314116 2.3704895 -0.8110266 1.0777301 -0.8812868 0.3292315
以下行也会产生1000次绘制,但现在每次观察的平均值在0到100之间变化。
rnorm(1000,c(0,100),1)
## [1] -1.12269954 98.83932359 0.07735428 99.91774166 0.60986243 101.50529435
那么在这种情况下会发生什么?一般逻辑是什么?
rnorm(1000,c(0,100),c(1,10))
感谢您提供矢量回收的链接,这是我遗失的一件事。另一个是使用平均值和标准差的组合。例如,
rnorm(1000,c(0,100),c(1,10))
是否从正态分布中得出平均值为0且标准差为10?以下答案解决了这个问题。
答案 0 :(得分:1)
我创建了一个示例来表达你问题中的第三个例子。
set.seed(1337)
x=rnorm(2000,c(0,100),c(1,10))
even=1:500*2
odd=0:499*2+1
mean(x[odd]) #0.00427
mean(x[even]) #99.5
sd(x[odd]) #1.01
sd(x[even]) #9.49
您可以看到该函数在每个向量的第一个和第二个输入之间交替。正如亚历克斯评论的那样,如果其中一个向量的长度与另一个不同(第二个例子),那么较短的向量将会回收"输入直到它与更长的向量一样长。因此,rnorm(1000,c(0,100),1)
通过循环第二个向量的输入转换为rnorm(1000,c(0,1000),c(1,1))
。