我有一个mat
矩阵。 mat
的某些列全为零,而某些列为非零。如何计算非零的列?
mat<-matrix(rep(0,2*5),ncol=2)
mat[,1]=c(1,2,3,4,5)
所需的结果是
1
。 最佳答案
如果要使列具有非零元素,这意味着它们可能具有零,但并非所有行都为零,则可以进行以下工作:
mat<-matrix(rep(0,2*5),ncol=2)
mat[,1]=c(1,2,3,4,5)
sum(colSums(mat!=0)!=0)
#> [1] 1
但是,如果要查找没有零的列,请看下面。我正在举一个例子来更好地说明这一点:
mat2<-matrix(rep(0,4*5),ncol=4)
mat2[,1]=c(0,2,3,4,5)
mat2[,2]=c(1,2,3,4,5)
mat2[,3]=c(0,0,0,-1,1)
sum(colSums(mat2!=0)!=0) #count of non-zero columns
#> [1] 3
sum(colSums(mat2!=0)==nrow(mat2)) #count of columns with no zeros
#> [1] 1
如果要找出哪些列非零,请使用
which
而不是sum
:which(colSums(mat2!=0)!=0) #non-zero columns
#> [1] 1 2 3
which(colSums(mat2!=0)==nrow(mat2)) #columns with no zeros
#> [1] 2
关于r - 计算矩阵中非零列的数量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56446789/