[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