João Cortes
João Cortes

Reputation: 23

mathematica: PadRight[] and \[PlusMinus]

Is there any way that

PadRight[a \[PlusMinus] b,2,""] 

Returns

{a \[PlusMinus] b,""}

Instead of

 a \[PlusMinus] b \[PlusMinus] ""

?

I believe that i need to somehow deactivate the operator properties of [PlusMinus].

Why do i need this?

I'm creating a program to display tables with physical quantities. To me, that means tables with entries like (value of a) [PlusMinus] (uncertainty of a)

When i have several columns with different heights, i'm stuffing the shorter ones with "", so i can use Transpose the numeric part of the table.

If the column has more than one entrie, there's no problem:

PadRight[{a \[PlusMinus] b,c \[PlusMinus] d},4,""]

gives what i want:

{a \[PlusMinus] b,c \[PlusMinus] d,"",""}

It is when the column has only one entrie that my problem appears.

This is the code that constructs the body stuffed with "":

If[tested[Sbody],1, 
 body = PadRight[body, {Length[a], Max[Map[Length, body]]

With

tested[a__] := 
  If[Length[DeleteDuplicates[Map[Dimensions, {a}]]] != 1, False, 
   True];

, a function that discovers if is arguments have the same dimension

and

a={Quantity1,Quantity2,...}

Where the quantities are the one's that i want on my table.

Thanks

Upvotes: 1

Views: 154

Answers (1)

Yehuda
Yehuda

Reputation: 88

First you need to be aware of that any expression in Mathematica is in the form of Head[Body] where body may be empty, a single expression or a sequence of expressions separated by commas Length operate on expressions, not necessarily lists so Length[PlusMinus[a,b]] returns 2 since the body of the expression contains to expressions (atoms in this case) that are a and b

Read the documentation on PadRight. The second argument define the final length of the expression so PadRight[{a,b},4,c] results with a list of length 4 with the last two elements equal to PadRight[{a,b},2,c] results with the original list since it is already of length 2 Therefore PadRight[PlusMinus[a,b],2,anything] just returns the same PlusMinus[a,b] unchanged since it is already of length 2 so, youר first example is wrong. You are not able to get a result with head List using PadRight when you try to pad to an expression with head PlusMinus

There is no problem of executing PadRight[PlusMinus[a,b],3,""] but the result looks funny (at best) and logically meaningless, but if this is what you wanted in the first place you get it, and following my explanations above you can figure out why

HTH

best

yehuda

Upvotes: 1

Related Questions