获取矩阵中右侧最远行值的列索引

时间:2015-09-29 01:36:20

标签: r

我正在尝试获取与我的数据集中右边最远值对应的列的值(完全是二进制):

Variable 1 2 3 4 5 
   A     0 0 1 0 1
   B     0 1 0 0 0
   C     1 0 0 1 0
   D     1 1 1 1 1    

因此,对于上面的矩阵,我想知道变量A(在这种情况下为5),变量B(2),变量C(4)等的最高值。我不知道从哪里开始有这个问题 - 有人有想法吗?

谢谢!

2 个答案:

答案 0 :(得分:7)

您正在寻找max.col

max.col(m, "last") 
# 5 2 4 5

输入?max.col以查看有关其工作原理的详细信息。

数据:

m <- structure(c(0L, 0L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 
  0L, 1L, 1L, 1L, 0L, 0L, 1L), .Dim = 4:5, .Dimnames = list(c("A", 
  "B", "C", "D"), c("1", "2", "3", "4", "5")))
#   1 2 3 4 5
# A 0 0 1 0 1
# B 0 1 0 0 0
# C 1 0 0 1 0
# D 1 1 1 1 1

答案 1 :(得分:1)

您也可以尝试在行模式下使用apply并在矩阵的每一行中找到最大的索引:

M = matrix( 
    c(0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1), 
    nrow=4, 
    ncol=5) 

maxVals <- apply(M, 1, function(x) {
                           y <- max(c(1:length(x))[x==1])
                           return(y)
                       })

> maxVals
[1] 5 2 4 5