Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
505 views
in Technique[技术] by (71.8m points)

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

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 someone help me to implement this ?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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)), ]

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...