使用R,返回满足条件的列号

时间:2015-02-12 15:45:41

标签: r numbers conditional-statements

我有以下矩阵:

        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))
}

但两次返回列:

12 17

12 17

10 16 24

10 16 24

有没有办法只返回一次相应的列号?

1 个答案:

答案 0 :(得分:3)

您可以尝试按行应用:

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))