你好,我需要找到矩阵中每个行向量的第一个负数的位置
我试过匹配并应用,但它只显示第一个
z<-matrix(c(-3,2,-1,3,2,-2,3,-4,-1),ncol=3)
k<-z<0
h<-apply(k,1,function(x) match(TRUE,k))
我想让它显示 [1,3,2] 但它只显示整个矩阵 [1,1,1] 的第一个匹配项
最佳答案
我们可以使用 max.col
和 ties.method = "first"
来得到第一个负数
max.col(z < 0, ties.method = "first")
#[1] 1 3 1
使用apply
你可以做到
apply(z < 0, 1, which.max)
这两种方法都要求行中至少有一个负数,否则它将返回第一个索引。为避免这种情况,我们可以使用 rowSums
检查行中是否至少有一个负数,然后使用 max.col
。没有负值的行将得到 0。
(rowSums(z < 0) > 0) * max.col(z < 0, ties.method = "first")
关于r - 我需要在矩阵的每一列中找到第一个负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55820648/