Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2005
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2005

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

Search the Archive

Re: Applying function to nested lists

  • To: mathgroup at smc.vnet.net
  • Subject: [mg57919] Re: Applying function to nested lists
  • From: David Bailey <dave at Remove_Thisdbailey.co.uk>
  • Date: Sun, 12 Jun 2005 04:34:49 -0400 (EDT)
  • References: <d8e525$gnl$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Kerry Kim wrote:
> Hello,
> 
> I'm trying to get Mathematica to do the following:
> 
> Suppose
> x = {{1,2,3},{{4,5,6},7,8},9}
> f = some function
> 
> How can I get f applied to each element of x but with the list structure 
> intact?  I.e. I want something that generates:
> 
> {{f[1],f[2],f[3]},{{f[4],f[5],f[6]},f[7],f[8]},f[9]}
> 
> Thank you!
> -Kerry Kim
> 
Hi,

The problem here is that not all your numbers are at the same level with 
respect to the lists (otherwise, you could just use Map with a suitable 
levelspec), so one solution is to let f apply everywhere and then prune 
out the cases where f is applied to a list:

Map[f,x,\[Infinity]]//. f[x_List]->x

If f is actually a function that does something, use a function g that 
has no definition, and then replace g with f.

This will work fine providing the data in your nested lists is simple 
numbers or variables, but if you might have algebraic expressions in 
there, then you would need a more complicated approach to avoid 
inserting f inside the expressions.

David Bailey
http://www.dbaileyconsultancy.co.uk


  • Prev by Date: Re: saving the kernel
  • Next by Date: Re: Mathematica equivalent complexplot
  • Previous by thread: Re: Applying function to nested lists
  • Next by thread: Re: Reducing memory for big data sets