[R] ifelse

Uwe Ligges ligges at statistik.tu-dortmund.de
Sat Oct 24 20:28:56 CEST 2009



pking wrote:
> When I run this code from an R-script:
>        ddd = 360 + round ( atan2(-u,-v) / d2r )
>        print(class(ddd))
>        print(ddd)
>        ifelse ( ddd>360, ddd-360, ddd )
>        print(ddd)
>        
> I get this output:       
> [1] "numeric"
> [1] 461 213 238 249 251
> [1] 461 213 238 249 251
> 
> Why does ifelse not change the 461 to 101?


Because you never changed ddd

You want the last but one line to be

ddd <- ifelse ( ddd>360, ddd-360, ddd )

I guess.



> I recreated the vector ddd and ran the same ifelse
> code and it did work as expected.
>   
>> ddd <- c(461, 213, 238, 249, 251)  
>> print(class(ddd))
> [1] "numeric"
> 
>> print(ddd)
> [1] 461 213 238 249 251
> 
>> ifelse ( ddd>360, ddd-360, ddd )
>> print(ddd)
> [1] 101 213 238 249 251


I doubt.


> What am I missing?

That you made an assignment

ddd <- ifelse ( ddd>360, ddd-360, ddd )

that you have not told us (nor youself?) in your second case.

Best,
Uwe Ligges


> Patrick King
> 
>




More information about the R-help mailing list