Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 我需要在矩阵的每一列中找到第一个负数_R_Matrix_Vector_Match - Fatal编程技术网

R 我需要在矩阵的每一列中找到第一个负数

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

你好,我需要找到矩阵中每一行向量的第一个负数的位置

我尝试了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

这两种方法都要求行中至少有一个负数,否则它将返回第一个索引。为了避免这种情况,我们可以使用
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