       Re: Thread::tdlen: Objects of unequal length in

• To: mathgroup at smc.vnet.net
• Subject: [mg127765] Re: Thread::tdlen: Objects of unequal length in
• From: Bob Hanlon <hanlonr357 at gmail.com>
• Date: Mon, 20 Aug 2012 21:28:43 -0400 (EDT)
• Delivered-to: l-mathgroup@mail-archive0.wolfram.com
• Delivered-to: l-mathgroup@wolfram.com
• Delivered-to: mathgroup-newout@smc.vnet.net
• Delivered-to: mathgroup-newsend@smc.vnet.net
• References: <20120820081407.058F0681E@smc.vnet.net>

```You give an example of something that doesn't do what you want but you
never say what it is that you do want done.

Since Last[testdata] is a vector I assume that testdata is an m x n array,

testdata = Array[a, {3, 5}]

{{a[1, 1], a[1, 2], a[1, 3], a[1, 4], a[1, 5]}, {a[2, 1], a[2, 2], a[2, 3],
a[2, 4], a[2, 5]}, {a[3, 1], a[3, 2], a[3, 3], a[3, 4], a[3, 5]}}

{{(1/3)*(a[1, 1] + a[2, 1] + a[3, 1]),
(1/3)*(a[1, 2] + a[2, 2] + a[3, 2]),
(1/3)*(a[1, 3] + a[2, 3] + a[3, 3]),
(1/3)*(a[1, 4] + a[2, 4] + a[3, 4]),
(1/3)*(a[1, 5] + a[2, 5] + a[3, 5])}}

What you have implemented is

f1 ==
{Mean[testdata]} ==
{Mean /@ Transpose[testdata]} ==
{Total[testdata]/Length[testdata]}

True

Length[f1]

1

If what you want is the Mean of each row of testdata then use

meanByRows = Mean /@ testdata

{(1/5)*(a[1, 1] + a[1, 2] + a[1, 3] + a[1, 4] + a[1, 5]),
(1/5)*(a[2, 1] + a[2, 2] + a[2, 3] + a[2, 4] + a[2, 5]),
(1/5)*(a[3, 1] + a[3, 2] + a[3, 3] + a[3, 4] + a[3, 5])}

Length[meanByRows]

3

If you want the mean of each column then use

meanByColumns = Mean[testdata]

{(1/3)*(a[1, 1] + a[2, 1] + a[3, 1]),
(1/3)*(a[1, 2] + a[2, 2] + a[3, 2]),
(1/3)*(a[1, 3] + a[2, 3] + a[3, 3]),
(1/3)*(a[1, 4] + a[2, 4] + a[3, 4]),
(1/3)*(a[1, 5] + a[2, 5] + a[3, 5])}

Length[meanByColumns]

5

meanByColumns ==
Mean /@ Transpose[testdata] ==
Total[testdata]/Length[testdata] ==
f1[]

True

If what you want is the mean of all of the elements of testdata then use

meanOfAll = testdata // Flatten // Mean

(1/15)*(a[1, 1] + a[1, 2] + a[1, 3] + a[1, 4] + a[1, 5] +
a[2, 1] + a[2, 2] + a[2, 3] + a[2, 4] + a[2, 5] +
a[3, 1] + a[3, 2] + a[3, 3] + a[3, 4] + a[3, 5])

meanOfAll ==
Mean[meanByRows] ==
Mean[meanByColumns] //
Simplify

True

Bob Hanlon

On Mon, Aug 20, 2012 at 4:14 AM, Aaron <aaron.sokolik at gmail.com> wrote:
> I'm new to Mathematica and trying to run rebuild some programs from other=
systems in Mathematica.  I'm operating on large data lists and receiving t=
he unequal length error.  However, if I simply paste the output without the=
extra curly bracket into an operation, everything works.  Obviously, copyi=
ng and pasting wont work for functions... How can I get around this?
>
> Below are the functions I'm using to generate two lists from a single dat=
aset:
>
> Out= {{15.0059, 14.9897, 15.0248,....}}
>
> ln:= Last[testdata]
> Out= {14.9602, 14.8624, 15.3364, 15.0231,....}
>
> When I run Length on each of the outputs, I receive the proper number of =
datapoints for the Last function but receive an output of "1" for the Mean =
function.  If I paste the output with only 1 "{" though and run Length, I r=
eceive the proper output.
>
> I know this must be simple but I'm stuck.
>

```

• Prev by Date: Re: How to make fitting code using NDSolve?
• Next by Date: Re: Thread::tdlen: Objects of unequal length in