R 我需要在矩阵的每一列中找到第一个负数
你好,我需要找到矩阵中每一行向量的第一个负数的位置 我尝试了match和apply,但它只显示了第一个R 我需要在矩阵的每一列中找到第一个负数,r,matrix,vector,match,R,Matrix,Vector,Match,你好,我需要找到矩阵中每一行向量的第一个负数的位置 我尝试了match和apply,但它只显示了第一个 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)) z我们可以使用max.col和ties.method=“first”来获得第一个负数 max.col(z < 0, ties.method = "first") #[1] 1 3 1
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))
z我们可以使用max.col
和ties.method=“first”
来获得第一个负数
max.col(z < 0, ties.method = "first")
#[1] 1 3 1
这两种方法都要求行中至少有一个负数,否则它将返回第一个索引。为了避免这种情况,我们可以使用rowSums
检查行中是否至少有一个负数,然后使用max.col
。没有负值的行将得到0
(rowSums(z < 0) > 0) * max.col(z < 0, ties.method = "first")
(行和(z<0)>0)*max.col(z<0,ties.method=“first”)
备选修改操作尝试
apply(z<0, 1, function(x) which(x)[1])
# [1] 1 3 1
apply(谢谢你,我用了第二个,我知道肯定有负数,所以不需要检查required@MatteoEsposito如果它对你有用,你可以考虑接受投票的答案,以便它可以被标记为解决。你可以阅读更多关于它。
apply(z<0, 1, function(x) which(x)[1])
# [1] 1 3 1
z2 <- structure(c(-3, 2, -1, 3, 2, -2, 3, 0, -1), .Dim = c(3L, 3L))
apply(z2<0, 1, function(x) which(x)[1])
[1] 1 NA 1
apply(z<0, 1, function(x) match(TRUE, x))
# [1] 1 3 1