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

• To: mathgroup at smc.vnet.net
• Subject: [mg127773] Re: Thread::tdlen: Objects of unequal length in
• From: Bill Rowe <readnews at sbcglobal.net>
• Date: Tue, 21 Aug 2012 04:59:32 -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

```On 8/20/12 at 4:14 AM, aaron.sokolik at gmail.com (Aaron) 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 the unequal length error.  However, if I simply paste the
>output without the extra curly bracket into an operation, everything
>works.  Obviously, copying 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 dataset:

It is not entirely clear as to what is being assigned to
testdata. So, I will assume you have two simple (1D) lists of
equal length. For example, starting with

a = RandomInteger[{0, 10}, 5];
b = RandomInteger[{11, 20}, 5];

Then I can set testData to

testData = {a, b};

With this I can do

Out= {13/2,13,11,27/2,29/2}

note the difference in syntax and note I get a list of 5
elements. That is I am averaging the first element of list a
with the first element of list b and so forth.

Notice

In:= Dimensions[testData]

Out= {2,5}

That is testData consists of two lists of equal length. Notice

In:= Dimensions[Sequence[{{testData}}]]

Out= {1,1,2,5}

In:= Dimensions[{{testData}}]

Out= {1,1,2,5}

That is Sequence isn't doing what you think and if you have
defined testData as I have above the result then {{testData}}
will not have the dimensional structure needed by MapThread. In
fact, MapThread is not needed at all since

In:= Mean[testData]

Out= {13/2,13,11,27/2,29/2}

produces exactly the same result. And if the your desire was to
have return the mean of list a along with the mean of list b
rather than averaging an element of list a with the
corresponding element of list b, you could do either

In:= Mean /@ testData

Out= {36/5,81/5}

or

In:= Mean /@ testData

Out= {36/5,81/5}

```

• Prev by Date: Re: Thread::tdlen: Objects of unequal length in
• Next by Date: Re: Drawing a Line From One Plot to Another