从矩阵中提取列名称

时间:2015-10-22 23:53:09

标签: r max which

我想在矩阵中提取最大值的列名。我的代码如下:

p<-array(0,c(2,2,2))
  colnames(p)=c("within","out")
  rownames(p)=c("within","out")
  p[,,1]<-matrix(c(.2, 0.8,.7,.3), 2, 2, byrow=TRUE)
  p[,,2]<-matrix(c(.6, 0.4,.9,.1), 2, 2, byrow=TRUE)
 p1<-p[1,,1]
  inds=which(p1==max(p1),arr.ind=TRUE)
  cnames = colnames(p1)[inds[1]]

当我调用cnames时,它返回NULL而不是“out”

2 个答案:

答案 0 :(得分:3)

不是使用indswhich分别生成max,而是使用inds索引p1的名称,我通常会抓住名称which.max返回的元素,用于查找命名向量中最大元素的名称:

names(which.max(p1))
# [1] "out"

答案 1 :(得分:1)

在您的情况下,p1是一个向量,因此您可以使用names代替colnames。这应该有效:

cnames = names(p1)[inds[1]]