Deleting multiple rows from a data matrix based on exp value
Hi, Thanks for the quick reply. However, your suggestion doesn't solve the problem I'm afraid (i.e dim(Matrix) still the same). What I want is to reduce the number of rows (probesets) markedly based on their normalized intensity - thus I've chosen a cut-off of 1.11 When I run your code (as well as mine listed in my previous mail) R just give me a very long list (in two columns) with the probeset names as well as the expression value in column 17 (I've 25 columns in total in my data matrix). I have tried to generate a small matrix (4 rows and 3 colums) to test your code... when I type head(Matrix) it looks ok (now only 3 rows as expected), but when I type dim(matrix) it still states 4 rows and 3 colums...? NB: When I write 'exp value' I mean log transformed, background corrected expression values derived from Affy chips (I used the 'justRMA' command to read my CEL files and compute an expression measure) Kind regards, Peter
On Mon, Nov 21, 2011 at 05:09, Dennis Murphy <djmuser at gmail.com> wrote:
Without a reproducible example this is just a guess, but try Matrix[apply(Matrix, 1, function(x) any(x > 1.11)), ] This will retain all rows of Matrix where at least one value in a row is above the threshold 1.11. If that doesn't do what you want, please provide a small reproducible example and a clearer statement of the desired output. It's not at all clear to me what 'exp. values' means - I can devise at least three meanings off the top of my head, none of which may conform to what you mean. HTH, Dennis On Sun, Nov 20, 2011 at 2:45 PM, Peter Davidsen <pkdavidsen at gmail.com> wrote:
Dear List, I have a data matrix that consists of ~4500 rows and 25 columns (i.e. an exprSet object that I converted via the 'exprs' function into a data matrix) Now I want to remove/delete the rows where all exp. values in that particular row are below or equal to a specific cut-off value (e.g 1.11) I have tried using several commands to address this issue:
Matrix[rowSums(Matrix <= 1.11) <= 1.11, ]
or
Matrix[ !apply(Matrix<=1.11,1,all), ]
The above commands seem to work fine when I generate a small "test" matrix like:
M <- matrix(c(2,5,8,0.4,0.8,0.5,4,12,3), nrow=3, byrow=T)
However, non of the two commands decrease the number of rows in my real matrix! Any help would be appreciated Kind regards, Peter
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.