[R] Equivalent for Matematica function Which...

David Winsemius dwinsemius at comcast.net
Tue Sep 29 21:00:04 CEST 2009


On Sep 29, 2009, at 2:36 PM, Jarek Jasiewicz wrote:

> well function arguments are in square brackets. z is result (new  
> vector). I show Matematica syntax, but cannot explain what I expect.  
> Sorry
> The example is wrong because it can be replaced by R cut function.  
> The arguments are: condition,action.... and can be replaced by ste  
> of ifelse formulas:
>
> if (x<10) x<-0.7
> else if (x<30 && x=>10) x<-x^2/(x-1)
> etc...
> but that solution is slow for vectors with millions of numbers

1)Slow? It shouldn't even work! The if { } else { } construct is for  
program control, not for iterative testing and assignment. You should  
be using ifelse(<cond>, <affirm-val>, <neg-val>) which is designed for  
that purpose.

2) you should not be using "&&" unless you are working with a scalar.  
Use "&".

Perhaps (minimally tested):

x <- 1:100
ifelse( x < 10, 0.7, ifelse( x<30 & x>=10, x^2/(x-1), NA))


(And the "x >= 10" , (I doubted that " =>" would be correct and  
testing shows it does throw a syntax error),  is not needed since you  
would never get to that evaluation if x were < 10.

Note: the ifelse's can be only nested up to 7 levels if memory serves.

-- 
David

>
> thanks
>
> Jarek
>
> Erik Iverson pisze:
>> Hello,
>>
>>> I'm looking for equivalent of Matematica function "Which" which  
>>> works as
>>> follows:
>>>
>>> z = Which[x<10,0.3, 10<=x<20,0.5, 20<=x<100,1]
>>>
>>> where x is a vector
>>>
>>
>> Unless someone happens to be a Mathematica user (very possible), I  
>> don't know how we would answer the question.  You give an example  
>> of the function call, but not what the function arguments or return  
>> value are.
>> There is an R function called "which", but what the Mathematica  
>> "Which" is doing is entirely mysterious from your example.  What is  
>> in "z" for instance??
>>
>
> ______________________________________________
> 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.

David Winsemius, MD
Heritage Laboratories
West Hartford, CT




More information about the R-help mailing list