2016-10-24 21 views
0

11217行と2列の行列1と、10行10列の行列2があります。今、行列1の行の値と行列2のインデックスを比較したいと思います。これらが同じ場合、行列2の対応するインデックス(現在は0)の値を+1で増やす必要があります。行列の同じ行の2つの値を別の行列の行と列のインデックスと比較するR

 c1 <- x[2:11218] #these values go from 1 to 10 
    #second column from index 3 to N 
    c2 <- x[3:11219] #these values also go from 1 to 10 
    #matrix with column c1 and c2 
    m1 <- as.matrix(cbind(c1 = c1, c2 = c2)) 
    #empty matrix which will count the frequencies 
    m2 <- matrix(0, nrow = 10, ncol = 10) 
    #change row and column names of m2 to the numbers of 1 to 10 
    dimnames(m2) <-list(c(1:10), c(1:10)) 
    #go through every row of the matrix m1 and look which rotation appears, add 1 to m2 if the rotation 
    #equals the corresponding index 
    r <- c(1:10) 
    c <- c(1:10) 
    for (i in 1:nrow(m1)) { 
     if(m1[i,1] == r & m1[i,2] == c) 
    m2[r,c]+1 
    } 

計算された頻度はありません。理由はわかりません。

+0

あなたは 'm2を持つ最後の行を交換したいかもしれません[ r、c] = m2 [r、c] + 1 – etienne

答えて

0

tableの動作を複製しようとしているようです。代わりに使ってみることをお勧めします。その後

m1 <- 
    matrix(round(runif(20, 1,10)) 
     , ncol = 2) 

tableを使用します。

シンプルデータ(あなたが変数xが含まれていませんでした表示されます)。ここでは、私は右の列が生成されることを確実にする因子であることが、各列の値を設定しています:

table(factor(m1[,1], 1:10) 
     , factor(m1[,2], 1:10)) 

ができます:

 1 2 3 4 5 6 7 8 9 10 
    1 3 4 0 4 2 0 5 3 2 0 
    2 3 7 9 7 4 5 3 4 5 2 
    3 4 6 3 10 8 9 4 2 7 3 
    4 5 2 14 3 7 13 8 11 3 3 
    5 2 13 2 5 8 5 7 7 8 6 
    6 1 10 7 4 5 6 8 5 8 5 
    7 3 3 6 5 4 5 4 8 7 7 
    8 5 5 8 7 6 10 5 4 3 4 
    9 2 5 8 4 7 4 4 6 4 2 
    10 3 1 2 3 3 5 3 5 1 0 
関連する問題