Re: Thread::tdlen: Objects of unequal length in
- To: mathgroup at smc.vnet.net
- Subject: [mg127766] Re: Thread::tdlen: Objects of unequal length in
- From: Sseziwa Mukasa <mukasa at gmail.com>
- Date: Mon, 20 Aug 2012 21:29:03 -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>
The {} indicate a list, but lists can be nested so a structure of the
form {{...}} is a list of length one whose first element is another
list. I'm not sure what you are after with the MapThread[Mean,
Sequence[{{testdata}}]] expression, my guess is you're computing the
mean along the rows of an array. Assuming your data is in a 2D array
then Last[testdata] is the last row of your data and what you expect is
the number of columns (length of last row) to be the same as the number
of computed means.
Assuming you want the means along the rows I would have done:
Mean/@Transpose[testdata] (/@ is the infix form of Map so this is
equivalent to Map[Mean,Transpose[testdata]]) which is probably easier to
interpret. Otherwise, just take the first element of the result of your
MapThread expression: First[MapThread[Mean, Sequence[{{testdata}}]]]
(alternatively MapThread[Mean, Sequence[{{testdata}}]][[1]] or
Last[MapThread[Mean, Sequence[{{testdata}}]]]).
Regards,
Sseziwa
On Aug 20, 2012, at 4:14 AM, 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:
>
> ln[13]:= MapThread[Mean, Sequence[{{testdata}}]]
> Out[13]= {{15.0059, 14.9897, 15.0248,....}}
>
> ln[14]:= Last[testdata]
> Out[14]= {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 receive the proper output.
>
> I know this must be simple but I'm stuck.
>
- References:
- Thread::tdlen: Objects of unequal length in
- From: Aaron <aaron.sokolik@gmail.com>
- Thread::tdlen: Objects of unequal length in