[R] how to do a IF ELSE in a matrix format

David Winsemius dwinsemius at comcast.net
Tue Aug 3 03:44:32 CEST 2010


On Aug 2, 2010, at 9:16 PM, Hey Sky wrote:

> Hey, Rers
>
> I am new to R and this question may has been asked many times or a  
> very old
> one. I have checked
>
> the archive but found nothing (maybe I used the wrong key words).  
> any advise is
> appreciated
>
> the question is:
>
> I try to replace a col vector with some other values, see
>
> edu<-matrix(0,1000,2)
>
> edu1<-runif(1000,0,1)
> edu[,1]<-edu1
>
> the colum  vector edu[,1]  would have value between 0 and 1. if I  
> want to
> replace the value of edu[,2]
>
> to 1 if edu[,1] less than 0.5, how to do it in the form of matrix  
> but not under
> a loop structure?
>
> I have tried:
>
> if (edu[,1]>=0.5) edu[,2]=1

You have discovered that is not the right way and if you look at the  
help page for "if" you should see why (it doesn't vectorize).

Try:

edu[ edu[,1] < 0.5 ,1] <- 1

 > min(edu[,1])
[1] 0.5001459

Or you could use ifelse, but I prefer vectorized solutions when they  
are clear.

-- 
David.
>
> there is only the first 0.5 have been done but not all the others.  
> thanks for
> any kind answer.
>
> Nan
> from Montreal
>
>
>
> ______________________________________________
> 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.

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list