我有以下矩阵:
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
有没有办法只返回一次相应的列号?
答案 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))