[R] Deleting multiple rows from a data matrix based on exp value

Peter Davidsen pkdavidsen at gmail.com
Mon Nov 21 11:41:06 CET 2011


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.
>>
>



More information about the R-help mailing list