How to filter out matrix rows with entries less than specific value

后端 未结 2 1569
别跟我提以往
别跟我提以往 2020-12-18 16:52

I\'m dealing with very big matrix. I want just keep the rows of the matrix which 90% of it\'s entries are bigger than 10. Since I\'m not familiar much with R, would someon

2条回答
  •  清酒与你
    2020-12-18 17:40

    I would just use rowSums and common comparison operators.

    Here's a minimal example:

    set.seed(1); m <- matrix(sample(50, 100, TRUE), ncol = 10)
    rowSums(m > 10) == ncol(m)
    #  [1]  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
    m[rowSums(m > 10) == ncol(m), ]
    #      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
    # [1,]   14   11   47   25   42   24   46   17   22    12
    # [2,]   29   35   33   25   40   22   23   18   20    33
    

    To accommodate a fractional approach, try something like:

    m[rowSums(m > 10) >= (.9 * ncol(m)), ]
    

提交回复
热议问题