2017-06-15 5 views
0

8x8行列M[[K]]のセルの列方向をsumと計算すると、列が奇数のときに奇数行が加算されます。列が偶数の場合は、列の下に偶数行セルを追加します。私はそれから、データフォルダをループする必要があります。列が奇数の場合、奇数行を読み取ってこれらの値を合計する方法R

vin <- rep(c(1,0),(NoParticipants/2)) 
vout <- rep(c(0,1),(NoParticipants/2)) 
M <- vector("list") 
total <- vector("list") 
group <- vector("list") 

for(k in 1:NoGames){ 
    M[[k]] <- (CumulativeAdjacencyMatrices[[k]][[20]]) 
    total[[k]] <- colSums(M[[k]]) 
    group[[k]] <- (M[[k]]%*%vin)*vin + (NoRounds - (M[[k]]%*%vin))*vout 
} 

group[[k]]の行は、負の整数を戻しています(これは無効にする必要があります)。私が望むことをするためにコマンドを書き直すにはどうすればよいですか?任意の考えをいただければ幸いです:)

答えて

0

を私は次のようにちょうど奇数と偶数のインデックスを横断としてあなたのアプローチに代わるものを提案:

#sample matrix 
m <- matrix(sample.int(20, replace = TRUE), nrow = 8, ncol = 8) 
> m 
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] 
[1,] 11 9 2 14 10 11 9 2 
[2,] 17 6 9 7 4 17 6 9 
[3,] 1 10 20 12 18 1 10 20 
[4,] 1 14 8 3 12 1 14 8 
[5,] 14 10 11 9 2 14 10 11 
[6,] 7 4 17 6 9 7 4 17 
[7,] 12 18 1 10 20 12 18 1 
[8,] 3 12 1 14 8 3 12 1 

#adding odd index columns 
> colSums(m[,seq(1,ncol(m),2)]) 
[1] 66 69 83 83 

#adding even index columns 
> colSums(m[,seq(2,ncol(m),2)]) 
[1] 83 75 66 69 

# column 1 = sum rows 1,3,5,7 and so on... 
for(i in 1:(ncol(m)-2)){ 
    m[,i] <- rowSums(m[,seq(i,8,2)]) 
} 

・ホープ、このことができます。

+0

はい、これは役に立ちます。 vinとvoutのバイナリ関数を組み込むにはどうすればいいですか?これは、全ての奇数がすべての偶数をゼロにするためにvinを使用すべきであり、voutがすべての偶数を使用してすべての確率をゼロにすることを設定する。たとえば、列1は行1,3,5,7を合計して38を与え、列2は行2,4,6,8を数えて36などとします。 –

+0

@ MK.L、あなたに合ったアップデートを見なさい – parth

0

私はどこが間違っているか分かりました。最後の行でNoRoundsをトータル[[k]]に置き換える必要がありました。

関連する問題