我有兩個365x1矩陣s1和s2,均值和標準差矢量。 我想模擬新的365x1矩陣的正態分佈。我使用的代碼是R for for循環矩陣
sim<-matrix(rep(NA,365),nrow=365,ncol=1)
for (i in 1:365){y<-rnorm(1,s1[i,],s2[i,])
sim[i,]<-y[i]}
但是它只產生第一個值。我應該如何解決我的代碼? 非常感謝!
我有兩個365x1矩陣s1和s2,均值和標準差矢量。 我想模擬新的365x1矩陣的正態分佈。我使用的代碼是R for for循環矩陣
sim<-matrix(rep(NA,365),nrow=365,ncol=1)
for (i in 1:365){y<-rnorm(1,s1[i,],s2[i,])
sim[i,]<-y[i]}
但是它只產生第一個值。我應該如何解決我的代碼? 非常感謝!
不需要循環。 RNORM是矢量化所以才這樣做...
s1 <- sample(10,365,repl=TRUE)
s2 <- sample(3,365,repl=TRUE)
rnorm(365 , s1 , s2)
#[1] 5.83648500 1.64208807 0.02800676 -1.76443571 5.15361880 2.88269571
.
.
.
這將引起的平均值和標準偏差向量反過來s1
和s2
使用每個值365個隨機正偏離。
您只獲取一個值的原因是因爲在{y<-rnorm(...
中,您將分配給一個標量變量y
。在下一行中,您嘗試獲取y[i]
的值,i
將不會存在大於1的值。
但是,根本不需要循環。 rnorm
函數被矢量化,這意味着它接受矢量作爲均值和標準偏差的參數。所以,你可以用
sim <- rnorm(365, s1, s2)
這是否意味着如果我使y矩陣,我的代碼應該工作?我怎麼能在循環中做到這一點? – user2472273
高填充你
sim
載體,因爲你是比較新這裏,你可能想讀[** **左右(http://stackoverflow.com/about)和[* * faq **](http://stackoverflow.com/faq)瞭解SO如何工作。如果您收到解決問題的答案,您可以通過單擊小號複選標記或提供有用答案來接受它,那麼StackOverflow對每個人都更有價值。你完全沒有義務這樣做,但如果答案確實解決了你的問題,那麼這是一種「回報」網站的好方法。謝謝! –