R:ncol返回NULL,即使对象是矩阵

时间:2015-07-28 18:03:27

标签: r matrix

我有一个只有一列的矩阵,其元素不是完全为0.

我使用以下代码来获取矩阵中非零列的数量:

ncol(matrix[, colSums(matrix) != 0])

当矩阵具有多于1个非零列时,此代码返回正确的数字,但是当矩阵恰好有1个非零列时,此代码返回NULL。

我尝试使用此代码,似乎工作正常:

length(which(colSums(matrix) != 0))

可能是什么问题?

1 个答案:

答案 0 :(得分:3)

您需要设置drop = FALSE,否则如果只有一列,[会将结果减少为矢量。

ncol(matrix[, colSums(matrix) != 0, drop = FALSE])

或者只使用NCOL来解释这种可能性。

NCOL(matrix[, colSums(matrix) != 0])