Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Problem with the 'if' command

  • To: mathgroup at smc.vnet.net
  • Subject: [mg96603] Re: [mg96578] Problem with the 'if' command
  • From: DrMajorBob <btreat1 at austin.rr.com>
  • Date: Tue, 17 Feb 2009 06:24:30 -0500 (EST)
  • References: <200902162139.QAA15951@smc.vnet.net>
  • Reply-to: drmajorbob at longhorns.com

"Length[list]/2 == 0" is the VERY wrong test.

Clear[median, x]
median[x_List] := Module[{n = Length@x, s = Sort@x},
    If[OddQ@n, s[[(n + 1)/2]], Mean@s[[n/2 + {0, 1}]]]
    ]

Array[median@Range@# &, 10]

{1, 3/2, 2, 5/2, 3, 7/2, 4, 9/2, 5, 11/2}

Array[Median@Range@# &, 10]

{1, 3/2, 2, 5/2, 3, 7/2, 4, 9/2, 5, 11/2}

Bobby

On Mon, 16 Feb 2009 15:39:19 -0600, mathandpi <mathandpi at yahoo.com> wrote:

> Hi everyone,
> I'm a new Mathematica user so I may be missing something fairly obvious,  
> but I'm having trouble with the 'if' command.
> I'm writing a function that is supposed to return the median of a list  
> (I know such a function already exists, but I need to create one myself).
>
> What I have is:
>
> newMedian[list_] :=
>  If[Length[list]/2 == 0,
>   1/2*(list[[(Length[list]/2) + 1]] + list[[(Length[list])/2]])
>   , list[[(Length[list] + 1)/2]]]
>
> if the list has an off number of members (condition is false), it  
> evaluates as expected.  If it's even, however,
>
> newMedian[{1, 2, 3, 4}] returns:
> Part::pspec: Part specification 5/2 is neither an integer nor a list of  
> integers.
>
> BUT
>
> list={1,2,3,4};
>
> 1/2*(list[[(Length[list]/2) + 1]] + list[[(Length[list])/2]])
> returns 5/2, as expected so that code is right.
>
> It seems likes its actually evaluating the false part of the code  
> (trying to find the 5/2'ith element in a list), even though the  
> condition is true.
>
> What's going on here?
>
> Thanks
>



-- 
DrMajorBob at longhorns.com


  • Prev by Date: Re: pfa2pfb
  • Next by Date: Re: Problem with the 'if' command
  • Previous by thread: Problem with the 'if' command
  • Next by thread: Re: Problem with the 'if' command