コードの末尾にあるn.I
マトリックスにforloopの出力データを格納しようとしていますが、出力マトリックスに問題があると確信しています。私には同じ値、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