0

列名とともに観測を選択したいマトリックスがあります。

subset()またはを使用するmatrix[]%in%と、行全体が取得されます。

その単一の観測とその列名のみを取得したいと思います。これを行う方法はありますか?

次に例を示します。

マトリックス:

        col1 col2 col3
row 1    10   20    30 
row 2    30   30    40

ここで、値が最も高い値と列名を選択したいと思います。

max <- max(matrix)
subset(matrix, matrix==max)

これにより、次の出力が得られます。

        col1 col2 col3
row 2    30   30    40

ただし、取得したいのは次のとおりです。

       col3
        40
4

2 に答える 2

1

値は既にわかっているので、列名を取得するだけです。

m明らかな理由でマトリックスを呼び出す:

m <- matrix(c(10,30,20,30,30,40), ncol=3)
colnames(m) <- c('col1','col2','col3')

最大値 (または任意の特定の値) を含む列とその名前をapply確認するには、名前付きの論理ベクトルを返すために使用できます。

apply(m==10, 2, any)
col1  col2  col3 
TRUE FALSE FALSE 

apply(m==30, 2, any)
col1 col2 col3 
TRUE TRUE TRUE 

whichどの値が真であるかを示します。

which(apply(m==40, 2, any))
col3 
   3 

それが必要な場合は、名前だけです。

names(which(apply(m==40, 2, any)))
[1] "col3"
于 2012-12-22T14:41:48.837 に答える
0

これを試して:

setNames(c(m), colnames(m)[col(m)])[m == max(m)]
于 2012-12-22T14:51:01.610 に答える