Re: simple problem with Map?!?

• To: mathgroup at smc.vnet.net
• Subject: [mg49513] Re: simple problem with Map?!?
• From: "Curt Fischer" <crf3 at po.cwru.edu>
• Date: Thu, 22 Jul 2004 02:46:05 -0400 (EDT)
• References: <cdljfp\$867\$1@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```Relishguy wrote:
> I do not understand why the last evaluation ends up screwed:
>
> In[1]:= d0 = {30,60,180,60,30};
>
> In[2]:= tt = Plus @@ d0
> Out[2]= 360
>
> In[3]:= pp = N[d0 / tt]
> Out[3]= {0.0833333,0.166667,0.5,0.166667,0.0833333}
>
> In[4]:= ppp = N[d0 / (Plus @@ d0)]
> Out[4]= {0.0833333,0.166667,0.5,0.166667,0.0833333}
>
> In[5]:= pppp = N[# / (Plus @@ #)]& /@ d0
> Out[5]= {1.,1.,1.,1.,1.}
>
> Can anyone explain this simply? Do I need Hold[] or Evaluate[]
> somewhere?

No.  Right now you are Mapping your entire pure function N[#,(Plus@@#)]&
onto the list d0.  Thus, this entire function is first applied to the first
element in d0:
N[30/(Plus@@30)], which gives 1.  Next, the entire pure function is applied
to the second element of d0, giving 1. again, and so on.

To get what you want, how about

ppppp = N[#/(Plus @@ #)] &[d0]

???

--
Curt Fischer

```

• Prev by Date: RE: Applying my function to elements of a vector
• Next by Date: Re: If-statement problems
• Previous by thread: RE: simple problem with Map?!?
• Next by thread: RE: simple problem with Map?!?