我試圖在代碼的末尾存儲來自forloop的n.I
矩陣的輸出數據,但我確定輸出矩陣有問題。它給了我所有相同的值,無論是0還是1.我知道print(SS)
正在輸出正確的值,並且可以看到forloop正常工作。用於輸出數據的循環存儲
有沒有人有任何建議如何解決矩陣,或任何我能夠存儲數據從forloop的方式?提前致謝!
c=0.2
As=1
d=1
d0=0.5
s=0.5
e=0.1
ERs=e/As
C2 = c*As*exp(-d*s/d0)
#Island States (Initial Probability)
SS=0
for(i in 1:5) {
if (SS > 0) {
if (runif(1, min = 0, max = 1) < ERs){
SS = 0
}
}
else {
if (runif(1, min = 0, max = 1) < C2) {
SS = 1
}
}
print(SS)
}
n.I=matrix(c(SS), nrow=i, ncol=1, byrow=TRUE)
請問您是否可以詳細說明該功能究竟意味着什麼?它似乎給了我什麼for循環產生類似的價值(即這種方式)。我在學習R方面仍然很陌生,並且注意到人們似乎儘可能避免使用forloops。這是爲什麼?非常感謝羅蘭! –
您應該閱讀「R介紹」。這會立即創建100個隨機值,並將您的x值與所有這些值同時進行比較。所得到的邏輯向量(TRUE/FALSE值)然後變成一個整數向量(1/0值)。向量化意味着循環發生在編譯後的代碼中,循環速度快很多個數量級。矢量化代碼通常也更易讀(如這個例子很好地演示)。 – Roland