Re: About Table
- To: mathgroup at smc.vnet.net
- Subject: [mg75005] Re: About Table
- From: "dimitris" <dimmechan at yahoo.com>
- Date: Fri, 13 Apr 2007 02:19:54 -0400 (EDT)
- References: <evksst$rid$1@smc.vnet.net>
I will try not sound elitistic.
But I can recall more than two (at least!) recent threads about
TableForm
that started from relevant queries of you! And as far as I remember
(and I have
good memory I think!) there were many replies to you, suggesting
various methods
of handling, by the well known gurus of this forum (no I don't
consider myself a guru!).
Didn't these replies cover your needs?
Anyway...
One way of working is
First creating the columns of your table (the third one is your data)
So
In[55]:=
lst1 = Table[Which[j <= 5, 0, j <= 10, 0.5, j <= 15, 1], {j, 1, 15}]
Out[55]=
{0, 0, 0, 0, 0, 0.5, 0.5, 0.5, 0.5, 0.5, 1, 1, 1, 1, 1}
Where we have used the flowing control function Which
In[56]:=
Information@Which
>From In[56]:=
"Which[test1, value1, test2, value2, ... ] evaluates each of the testi
in turn, returning the value of the valuei corresponding to the first
one that yields True."
>From In[56]:=
Attributes[Which] = {HoldAll, Protected}
Next
In[57]:=
lst2 = Table[Range[0, 2, 0.5], {3}] /. x_ :> IntegerPart[x] /;x != 0.5
&& x != 1.5//Flatten
Out[57]=
{0, 0.5, 1, 1.5, 2, 0, 0.5, 1, 1.5, 2, 0, 0.5, 1, 1.5, 2}
In this way I got the second column as you requested. I.e. the
elements {0, 0.5, 1, 1.5 ,2}
(*three integeres and two reals*) are recycling.
Also
In[59]:=
Information@IntegerPart
>From In[59]:=
"IntegerPart[x] gives the integer part of x."
>From In[59]:=
Attributes[IntegerPart] = {Listable, NumericFunction, Protected}
In[60]:=
Information@Flatten
>From In[60]:=
"Flatten[list] flattens out nested lists. Flatten[list, n] flattens to
level n. Flatten[list, n, h] flattens subexpressions with head h."
>From In[60]:=
Attributes[Flatten] = {Protected}
And lastly
In[61]:=
lst3 = {3, 6, 9, 4.4, 6.7, 5, 3, 6.2, 3.7, 5.2, 6.3, 9, 10, 12, 13.2}
Out[61]=
{3,6,9,4.4,6.7,5,3,6.2,3.7,5.2,6.3,9,10,12,13.2}
Here is the desired matrix
In[63]:=
mat = MapThread[List, {lst1, lst2, lst3}]
Out[63]=
{{0, 0, 3}, {0, 0.5, 6}, {0, 1, 9}, {0, 1.5, 4.4}, {0, 2, 6.7}, {0.5,
0, 5}, {0.5, 0.5, 3}, {0.5, 1, 6.2}, {0.5, 1.5, 3.7},
{0.5, 2, 5.2}, {1, 0, 6.3}, {1, 0.5, 9}, {1, 1, 10}, {1, 1.5, 12},
{1, 2, 13.2}}
where
In[62]:=
Information@MapThread
>From In[62]:=
"MapThread[f, {{a1, a2, ... }, {b1, b2, ... }, ... }] gives {f[a1,
b1, ... ], f[a2, b2, ... ], ... }. MapThread[f, {expr1, \
expr2, ... }, n] applies f to the parts of the expri at level n."
>From In[62]:=
Attributes[MapThread] = {Protected}
And in table form as requested
In[64]:=
mat // TableForm[#1, TableAlignments -> Center, TableSpacing -> {3,
3}] &
\!\(\*
TagBox[GridBox[{
{"0", "0", "3"},
{"0", "0.5`", "6"},
{"0", "1", "9"},
{"0", "1.5`", "4.4`"},
{"0", "2", "6.7`"},
{"0.5`", "0", "5"},
{"0.5`", "0.5`", "3"},
{"0.5`", "1", "6.2`"},
{"0.5`", "1.5`", "3.7`"},
{"0.5`", "2", "5.2`"},
{"1", "0", "6.3`"},
{"1", "0.5`", "9"},
{"1", "1", "10"},
{"1", "1.5`", "12"},
{"1", "2", "13.2`"}
},
RowSpacings->3,
ColumnSpacings->3,
RowAlignments->Baseline,
ColumnAlignments->{Center}],
Function[ BoxForm`e$,
TableForm[ BoxForm`e$,
TableAlignments -> Center, TableSpacing -> {3, 3}]]]\)
Dimitris
=CF/=C7 Evanescence =DD=E3=F1=E1=F8=E5:
> Hello dear all:
> My questions are as follows:
> First I have a list is{3,6,9,4.4,6.7,5,3,6.2,3.7,5.2,6.3,9,10,12,13.2}
> Then I want to have tableform is as follows:
>
> 0 0 3
> 0 0.5 6
> 0 1 9
> 0 1.5 4.4
> 0 2 6.7
> 0.5 0 5
> 0.5 0.5 3
> 0.5 1 6.2
> 0.5 1.5 3.7
> 0.5 2 5.2
> 1 0 6.3
> 1 0.5 9
> 1 1 10
> 1 1.5 12
> 1 2 13.2
>
> Please tell me how can I do it.
> Thank you very much
> Evanescence 2007 04 11