> -----Original Message----- > From: r-help-boun...@r-project.org > [mailto:r-help-boun...@r-project.org] On Behalf Of dpender > Sent: Tuesday, March 08, 2011 4:07 AM > To: r-help@r-project.org > Subject: [R] If Statement > > Hi, > > I am having some problems using the if statement correctly. > I have used it > many times previously so I dona't know what is different with > this case. > Here is my problem: > > I have a 1X10 matrix of values as follows: > > > H.MC > [,1] > [1,] 4.257669 > [2,] 7.023242 > [3,] 4.949857 > [4,] 5.107000 > [5,] 4.257669 > [6,] 4.257669 > [7,] 4.257669 > [8,] 4.257669 > [9,] 4.257669 > [10,] 4.257669 > > What I want to do is replace all the values if 4.257669 with > a random number > between 3 and 4.5. To do this I have: > > H.MC.fin <- matrix(0,10,1) > > for (j in 1:10) { > > if(H.MC[j] == 4.257669) H.MC.fin[j] <-runif(1,3,4.5) else > H.MC.fin[j] <- > H.MC[j] > > }
Your for loop can be replaced by: whichToReplace <- H.MC == 4.257669 H.MC.fin <- H.MC # copy the whole thing # then replace some values in the copy H.MC.fin[whichToReplace] <- runif(sum(whichToReplace), 3, 45) whichToReplace will be a logical vector the length of H.MC, with a TRUE value at the positions to be replaced. Summing a logical vector gives the number of TRUE's in it. Others have pointed out that the initial test would be better done by something like whichToReplace <- abs(H.MC - 4.257669) < 0.00001 instead of demanding exact equality. If there might be NA's in H.MC, following the test with whichToReplace <- !is.na(whichToReplace) & whichToReplace Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com > This doesn't seem to do anything and H.MC.fin is the same as H.MC. > > Does anyone know what I am doing wrong? > > Thanks, > > Doug > > > -- > View this message in context: > http://r.789695.n4.nabble.com/If-Statement-tp3341167p3341167.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help@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. > ______________________________________________ R-help@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.