Search code examples
rmatrixrowzero

How to print row index and occurences count of zeros in rows in R data.frame


I want to print row index and the number of zeros present in each row of a R data.frame ..

The input matrix is like this:

            A    B
rowIndex1   0    1
rowIndex2   1    1

I thought to use this:

print(which(rowSums(matrix == 0) != 0))

I want that it prints something like this:

rowIndex1
1

However it does not print the number of zeros in the rows but a different number (I checked it) - like this:

rowIndex1
2400

How to achieve it?

Thanks


Solution

  • As mentioned in my comment, perhaps arr.ind would be of use.

    Using @bartektartanus's sample data:

    m <- diag(5) + c(0:6,0,0)
    
    table(which(m == 0, arr.ind=TRUE)[, "row"])
    # 
    # 2 3 4 5 
    # 1 2 1 1
    

    The "names" (in this case, 2, 3, 4, and 5) are your row numbers and the values (in this case, 1, 2, 1, 1) are the counts.

    Here is the output of which, so you can understand what is going on:

    which(m == 0, arr.ind=TRUE)
    #      row col
    # [1,]   3   2
    # [2,]   4   2
    # [3,]   5   2
    # [4,]   2   4
    # [5,]   3   4