1

私はマトリックスを持っています:

count <- matrix(c("a","a","a","b","b","i","i","b","a","a","g","i","a","g","g","g"),ncol=4,byrow=TRUE)

    [,1] [,2] [,3] [,4]
[1,]  a    a    a   b
[2,]  b    i    i   b
[3,]  a    a    g   i
[4,]  a    g    g   g

各行で最大回数発生する値を見つけて、それらの値を別の列に割り当てて、次のようにしたかったのです。

    [,1] [,2] [,3] [,4] [,count]
[1,]  a    a    a   b      a
[2,]  b    i    i   b      b & i
[3,]  a    h    h   i      h
[4,]  a    g    g   g      g 

使ってみapply(count,1,max)ましたがうまくいきませんでした。

4

2 に答える 2

5

入力データと出力データが一致しませんが、これはあなたが求めているものだと思います:

count <- matrix(c("a","a","a","b","b","i","i","b",
                  "a","a","g","i","a","g","g","g"),
                ncol = 4, byrow = TRUE)
count
#      [,1] [,2] [,3] [,4]
# [1,] "a"  "a"  "a"  "b" 
# [2,] "b"  "i"  "i"  "b" 
# [3,] "a"  "a"  "g"  "i" 
# [4,] "a"  "g"  "g"  "g"    

cbind(count,
      apply(count, 1, function(x) {
        z <- table(x)
        paste(names(z)[z == max(z)], collapse = " & ")
      }))
#      [,1] [,2] [,3] [,4] [,5]   
# [1,] "a"  "a"  "a"  "b"  "a"    
# [2,] "b"  "i"  "i"  "b"  "b & i"
# [3,] "a"  "a"  "g"  "i"  "a"    
# [4,] "a"  "g"  "g"  "g"  "g"  
于 2013-08-13T02:27:58.963 に答える