[R] If Statement
William Dunlap
wdunlap at tibco.com
Tue Mar 8 18:06:27 CET 2011
> -----Original Message-----
> From: r-help-bounces at r-project.org
> [mailto:r-help-bounces at r-project.org] On Behalf Of dpender
> Sent: Tuesday, March 08, 2011 4:07 AM
> To: r-help at 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 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