选择矩阵中的值以及R中的列名

时间:2012-12-22 14:15:43

标签: r

我有一个矩阵,我想从中选择一个观察点及其列名。

如果我使用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

2 个答案:

答案 0 :(得分:1)

如您所知,您只需要获取列名称。

出于明显原因调用矩阵m

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

要查看哪些列包含max(或任何特定值)及其名称,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"

答案 1 :(得分:0)

试试这个:

setNames(c(m), colnames(m)[col(m)])[m == max(m)]