[R] How to use conditional statement

Duncan Murdoch murdoch.duncan at gmail.com
Thu Mar 10 12:54:18 CET 2011


On 11-03-10 5:54 AM, Ivan Calandra wrote:
> Try with double "== "instead:
> ifelse(val3 == "Monthly", val<- val1, val<- val2)

That might work, but it is not how you should do it.  (It should work if 
val3 has a single entry, but will do strange things if val3 is a vector:

 > val3 <- c("Monthly", "Daily")
 > ifelse(val3 == "Monthly", val<- 1, val<- 2)
[1] 1 2
 > val
[1] 2


The ifelse() function does a vectorized test, and picks results from the 
two vector alternatives.  Vincy wants a simple logical if, which can be 
computed in a few different ways:

  val <- if(val3 == "Monthly") val1 else val2

or

  if (val3 == "Monthly") val <- val1
  else val <- val2

For a simple calculation like this I'd probably use the former; if the 
calculation got more complex I'd prefer the latter.

Duncan Murdoch

>
> Single "=" is for setting arguments within a function call. If you want
> to test equality, then double "==" is required.
> See ?"=="
>
> HTH,
> Ivan
>
> Le 3/10/2011 11:45, Vincy Pyne a écrit :
>> Dear R helpers
>>
>> Suppose
>>
>> val1 = c(10, 20, 35, 80, 12)
>> val2 = c(3, 8, 11, 7)
>>
>> I want to select either val1 or val2 depending on value of third quantity val3.
>>
>> val3 assumes either of the values "Monthly" or "Yearly".
>>
>> If val3 = "Monthly", then val = val1 and if val3 = "Yearly", then val = val2.
>>
>> I tried the ifelse statement as
>>
>>
>> ifelse(val3 = "Monthly", val = val1, val2)
>>
>> I get following error
>>
>>> ifelse(val3 = "Monthly", val = val1, val2)
>> Error in ifelse(val3 = "Monthly", val = val1, val2) :
>>     unused argument(s) (val3 = "Monthly", val = val1)
>>
>>> val
>> Error: object 'val' not found
>>
>> Kindly guide.
>>
>> Regards
>>
>> Vincy
>>
>>
>>
>> 	[[alternative HTML version deleted]]
>>
>>
>>
>> ______________________________________________
>> 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