使用 R,return 满足条件的列号

Using R, return column numbers where a condition is met

我有以下矩阵:

        1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
   [1,] 0 0 0 0 0 0 0 0 0  0  0  1  0  0  0  0  1  0  0  0  0  0  0  0
   [2,] 0 0 0 0 0 0 0 0 0  1  0  0  0  0  0  1  0  0  0  0  0  0  0  1

因此我的目标是:对于矩阵中的每一行,我希望打印矩阵中值为 1 的列号。

以下作品,排序为:

for(l in 1:nrow(matrix))
{
print(which(matrix[l,]==1))
}

但是returns列两次:

12 17

12 17

10 16 24

10 16 24

有没有办法只返回一次适当的列号?

您可以尝试按行应用:

a<-c(0, 0 ,0 ,0 ,0, 0, 0, 0, 0 , 0 , 0,  1,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0 , 0)
b<-c(0, 0 ,0 ,1 ,0, 0, 0, 0, 0 , 1 , 0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  1 , 0)

matrix<-rbind(a,b,a)

apply(matrix,1 ,function(x) which(x==1))