Skip to content

replace values in a matrix subject to boolean condition

2 messages · Werner Wernersen, Uwe Ligges

#
Hi everybody!

I am sorry to bother you with a question so simple but
I think there might be a 
better solution:
I have a matrix of size 360x501 where I want to check
the value of each 5th 
column of each row and replace it (and the 6th, 7th,
8th column) by zero if the 
value is less than 1000. I have written a double loop
to do that but that 
requires a lot of time.

Is there a faster way to achieve this?

Thanks,
   Werner
#
Werner Wernersen wrote:

            
Two ways to interpret your question:

1) if col5 < 100 replace col5 & col6 & col7 & col8 by 0:

    X[X[,5] < 1000, 5:8] <- 0


2) if col5 < 100 replace col5 by 0, if col6 < 100 replace col6 by 0, ...:


for(i in 5:8)
    X[X[,i] < 1000, i] <- 0

Uwe Ligges