2017-03-01 133 views
0

下面的行產生1000個隨機從正態分佈平均值爲0和SD 1指定rnorm的平均值/標準偏差向量是什麼?

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?以下答案解決了這個問題。

+5

發生了什麼事是矢量回收; 'rnorm'可以產生正態分佈的變量向量。結果的長度由第一個參數指定,所有其他參數以通常的R方式循環。更好地問在stackoverflow或只是谷歌這一點。 – Alex

+1

[執行標準回收規則](http://stackoverflow.com/questions/9335099/implementation-of-standard-recycling-rules)的可能重複,鏈接的問題描述了回收行爲。 – Alex

回答

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 

您可以看到函數在每個向量的第一個和第二個輸入之間交替。正如Alex評論的那樣,如果其中一個矢量的長度與另一個矢量的長度不同(第二個示例),那麼較短的矢量將「回收」輸入,直到長度與矢量一樣長。因此,rnorm(1000,c(0,100),1)通過循環第二個向量的輸入轉換爲rnorm(1000,c(0,1000),c(1,1))

相關問題