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

Steven McKinney smckinney at bccrc.ca
Tue Aug 3 04:56:32 CEST 2010


Here's one way:

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

> set.seed(1)
> edu<-matrix(0,1000,2)
> edu1<-runif(1000,0,1)
> edu[,1]<-edu1
> head(edu)
          [,1] [,2]
[1,] 0.2655087    0
[2,] 0.3721239    0
[3,] 0.5728534    0
[4,] 0.9082078    0
[5,] 0.2016819    0
[6,] 0.8983897    0
> edu[edu[, 1] < 0.5, 2] <- 1
> head(edu)
          [,1] [,2]
[1,] 0.2655087    1
[2,] 0.3721239    1
[3,] 0.5728534    0
[4,] 0.9082078    0
[5,] 0.2016819    1
[6,] 0.8983897    0
> 


Steven McKinney





> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of Hey Sky
> Sent: August-02-10 6:17 PM
> To: r-help at r-project.org
> Subject: [R] how to do a IF ELSE in a matrix format
> 
> 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
> 
> 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.



More information about the R-help mailing list