使用 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))
我有以下矩阵:
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))