0

これが問題の最小限の表現です。の要素に対して実行する操作に基づいてY、マトリックスを作成しようとしているとします。は大きな行列であるため、1 つの for ループで同じ行列を作成したいと考えています (時間を節約し、処理するデータ構造を少なくするため)。これが私がこれまでに持っているものです。最初の for ループの条件が正しく、必要であると仮定します。XYYX

Y<- matrix(nrow= 109, ncol = 10064)
X<- matrix(nrow= 109, ncol = 10058)
k<- 1

# I want to start at the 7th column of Y and skip every other column
for (j in seq(7, 10058, 2)){ # this is how I want it to loop; this loops 5029 times

# assign new_values based on the column pairs in Y; ie look in each column pairf of Y 
# and create new values based on the columns pairs in Y: Y[,j] and Y[,j+1]

 for (i in 1:109){
    #if (Y[i,j] == new_value_1){
    #   X[i,k]<- 0
    #}
    #else if (Y[i,j] == new_value_2){
    #   X[i,k]<- 1
    #}
    #else if (Y[i,j] == new_value_3){
    #   X[i,k]<- 2
    #}
  }
 k<- k + 1
}

行列の内容は重要ではXありYません。重要ではnew_valuesありません。私が助けを必要としているのは、マトリックスのインデックスです。X上記のコードを実行すると、ループの最後i109(これは正しい) ですが、またはkまでしか反復していないことがわかります。言い換えれば、コードはマトリックスの半分しか入力していません。行列を正しく入力できるように、 k を反復処理したいと思います。誰かがこれを修正するのを手伝ってくれますか? ありがとう5027502810058X

4

1 に答える 1

0

ifelseこの問題に適用する方法はわかりませんが、これでうまくいくようです。

Y<- matrix(nrow= 109, ncol = 10064)
X<- matrix(nrow= 109, ncol = 10058)
k<- 1

for (j in seq(7, 10058, 2)){
    for (o in 1:2){
        for (i in 1:109){

        }
     }
   k<- k+1
   }
 }

ループの最後は、私が望んでいたようになりましたk10058そしてiまだ109です。

于 2012-11-15T05:02:22.237 に答える