[R] ifelse

pking p_king at rogers.com
Sat Oct 24 20:40:20 CEST 2009


Thank you very much.   I am a newcomer to R and your quick response is very
much appreciated.  I obviously have more reading to do.

pk



HBaize wrote:
> 
> 
> What I think you are missing is that you didn't change ddd. The ifelse
> statement does not assign values to the ddd object. To change ddd it would
> read:
> 
> ddd <- ifelse ( ddd>360, ddd-360, ddd )
> 
> So when you enter "print(ddd)" you get the content of the original object,
> which has not changed. 
> 
> What is missing from your examples below is the output of the ifelse
> statement. When I run your second example (I can't run the first because
> you didn't supply the data objects) 
> I get the following:
> 
>> 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 )
> [1] 101 213 238 249 251
>>  print(ddd)
> [1] 461 213 238 249 251
>> 
> 
> Which is perfectly reasonable given that the ifelse does not change the
> ddd object. 
> 
> 
> 
> 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?
>> 
>> 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
>> 
>> What am I missing?
>> 
>> Patrick King
>> 
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/ifelse-tp26041165p26041853.html
Sent from the R help mailing list archive at Nabble.com.




More information about the R-help mailing list