[R] New vector based on if/else statement within for loop?
Duncan Murdoch
murdoch at stats.uwo.ca
Tue Oct 27 18:20:20 CET 2009
On 10/27/2009 1:14 PM, Douglas M. Hultstrand wrote:
> Hello,
>
> I am trying to create a new vector (w) that is based on comparing two
> vectors (P and Z). The compaison is simple (I created a for loop that
> reassigns w based on if statement), all Z values >= 24 and P values <=1,
> w=88 else w=77. I am not getting the correct results for w, see
> example code below. Any thoughts or suggestions on the correct method.
Use ifelse(), not if ... else. It's ideal for tests like these.
>
> Thank you,
> Doug
>
> P <- c(0,1,2,3,4,5,0,1,5)
> Z <- c(25,23,28,29,30,31,28,29,22)
> w <- P
>
> for (i in length(w)) {
That only sets i to one value, length(w). You could fix it by
for (i in seq_along(w))
but ifelse() is better:
w <- ifelse( Z >= 24 & P <= 1, 88, 77 )
Duncan Murdoch
> if(Z[i]>=24 && P[i]<=1) {
> w[i] = 88
> } else {
> w[i] = 77}
> }
>
> d.f <- data.frame(Z,P,w)
> d.f
> Z P w
> 1 25 0 0
> 2 23 1 1
> 3 28 2 2
> 4 29 3 3
> 5 30 4 4
> 6 31 5 5
> 7 28 0 0
> 8 29 1 1
> 9 22 5 77
>
More information about the R-help
mailing list