2017-01-27 10 views
0

各行がforループで得られたベクトルのデータを表す行列を作成しようとしています。私のコードは最終的な行列に5つの行と60の列があると想定されている場合、結果は1つだけです。各gene_stateベクトルは、長さ60のものであるべきで、そして目的は、私は、コードがそれが意図されている何を推測= 5ネストされたforループの結果を行列に格納するR

set.seed(1) 
N <- 5 
t <- 60 
myMatrix <- matrix(0, nrow=N, ncol=t) 
for(i in 1:N){ 
    gene_state <- 1 
    for(j in 1:t){ 
    randomNum <- runif(1) #runif(1) randomly generates a number between 0 and 1 
    if(gene_state == 1){  # if the gene_state is at 1 
     if(randomNum < 0.1){ # AND if the random number generated is less than 0.1 
     gene_state <- 2 # switch the state to 2 
     } else {  
     gene_state <- 1 # otherwise keep the state at 1 
     } 
    } else {   # if the gene_state is at 2 
     if(randomNum < 0.25){ # and if the random number is less than 0.25 
     gene_state <- 1 # switch the state to 1 
     }else{ 
     gene_state <- 2 # otherwise keep the state at 2 
     } 
    } 
    myMatrix[i,j] <- gene_state 
    } 
} 
+3

私は – rawr

+0

@PaulRが、私はあなたの推理はこの質問から 'ため-loop'タグを削除することが何であるかを教えてください5x60行列を取得します。 – Uwe

+0

@UweBlock:この文脈では特に有用なタグではないようです - 見つからなかった 'r'タグを追加することはおそらく非常に重要で、' matrix'タグと 'vector'タグは境界線であったので、 'for-loop'タグは役に立たないようです。それは私の意見ですが、それはいくつかの価値があると思うならば自由に追加してください。 –

答えて

1

Nとしてマトリックス中に一緒にそれらの5片にあります。私はすべてのコメントを切り捨て、最後の行を並べ替えました。

N <- 5 
t <- 60 
myMatrix <- matrix(0, nrow=N, ncol=t) 
for(i in 1:N){ 
    gene_state <- 1 
    for(j in 1:t){ 
     randomNum <- runif(1) 
     if(gene_state == 1){ 
      if(randomNum < 0.1){ 
       gene_state <- 2 
      } else {  
       gene_state <- 1 
      } 
     } else { 
      if(randomNum < 0.25){ 
       gene_state <- 1 
      }else{ 
       gene_state <- 2 
      } 
     } 
     myMatrix[i,j] <- gene_state 
    }} 

この結果、5 x 60のマトリックスになります。

dim(myMatrix) 
[1] 5 60 
+0

ありがとうございました!先日、私に別の何かを与えていたのはなぜか分かりません。 – Sarah

関連する問題