我正在尝试获取与我的数据集中右边最远值对应的列的值(完全是二进制):
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)等的最高值。我不知道从哪里开始有这个问题 - 有人有想法吗?
谢谢!
答案 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