我有一个只有一列的矩阵,其元素不是完全为0.
我使用以下代码来获取矩阵中非零列的数量:
ncol(matrix[, colSums(matrix) != 0])
当矩阵具有多于1个非零列时,此代码返回正确的数字,但是当矩阵恰好有1个非零列时,此代码返回NULL。
我尝试使用此代码,似乎工作正常:
length(which(colSums(matrix) != 0))
可能是什么问题?
答案 0 :(得分:3)
您需要设置drop = FALSE
,否则如果只有一列,[
会将结果减少为矢量。
ncol(matrix[, colSums(matrix) != 0, drop = FALSE])
或者只使用NCOL
来解释这种可能性。
NCOL(matrix[, colSums(matrix) != 0])