Re: Map onto one column of a matrix
- To: mathgroup at smc.vnet.net
- Subject: [mg95674] Re: Map onto one column of a matrix
- From: "Drago Ganic" <dganic at vodatel.net>
- Date: Sat, 24 Jan 2009 06:21:16 -0500 (EST)
- References: <gl49tb$g7v$1@smc.vnet.net> <gl71no$bvl$1@smc.vnet.net>
Hi, if you represent the matrix as a table/relation (Database` package of Roman E. Maeder) you could use his overloaded Table function. The solution is very elegant, but you need to name the columns (e.g. x,y or col1, col2 ). After naming the columns you use those names as function argumnets and don't need pure functions. You never need positional notiation. In[1]:= << Database` In[2]:= rel = newRelation[{x, y}, {{a, b}, {c, d}}]; In[3]:= Table[ {x, f[y]}, rel ] Out[3]= {{a, f[b]}, {c, f[d]}} Greetings from Croatia, Drago Ganic "Jens-Peer Kuska" <kuska at informatik.uni-leipzig.de> wrote in message news:gl71no$bvl$1 at smc.vnet.net... > Hi, > > data = {{a, b}, {c, d}}; > > MapAt[f, #, {-1}] & /@ data > > data /. {q_, r_?AtomQ} :> {q, f[r]} > > Regards > Jens > > . Grady wrote: >> Hi, suppose we've got a matrix >> >> data = {{a, b}, {c, d}}; >> >> and we want to map a function onto just the second column, so we want >> to end up with >> >> {{a, f[b]}, {c, f[d]}}. >> >> The best way I've found to do this is with MapAt: >> >> MapAt[f, data, Table[{i, 2}, {i, Length@data}]] >> >> Is there a better way? I keep hoping there's some notation similar to >> what's used in Part that lets you refer to a whole column with All, >> like data[[All,2]]. Thanks! >> >> -Daniel >> >