1

有什么办法可以

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

退货

{a \[PlusMinus] b,""}

代替

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

?

我相信我需要以某种方式停用 [PlusMinus] 的运算符属性。

为什么我需要这个?

我正在创建一个程序来显示带有物理量的表格。对我来说,这意味着表中的条目如(a 的值)[PlusMinus](a 的不确定性)

当我有几个不同高度的列时,我用“”填充较短的列,所以我可以使用 Transpose表格的数字部分。

如果该列有多个条目,则没有问题:

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

给了我想要的:

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

当该列只有一个条目时,我的问题出现了。

这是构造用“”填充的主体的代码:

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

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

, 一个函数,它发现参数是否具有相同的维度

a={Quantity1,Quantity2,...}

数量是我想要在我的桌子上的数量。

谢谢

4

1 回答 1

1

首先,您需要注意 Mathematica 中的任何表达式都是 Head[Body] 形式,其中 body 可能为空,单个表达式或由逗号分隔的表达式序列 Length 对表达式进行操作,不一定要列出 Length[PlusMinus [a,b]] 返回 2,因为表达式的主体包含 a 和 b 的表达式(在本例中为原子)

阅读 PadRight 上的文档。第二个参数定义表达式的最终长度,因此 PadRight[{a,b},4,c] 结果为长度为 4 的列表,最后两个元素等于 PadRight[{a,b},2,c] 结果使用原始列表,因为它的长度已经是 2 因此 PadRight[PlusMinus[a,b],2,anything] 只是返回相同的 PlusMinus[a,b] 不变,因为它的长度已经是 2 所以,你的第一个例子是错误的. 当您尝试填充带有头部 PlusMinus 的表达式时,您无法使用 PadRight 获得带有头部列表的结果

执行 PadRight[PlusMinus[a,b],3,""] 没有问题,但结果看起来很有趣(充其量)并且在逻辑上毫无意义,但如果这是你一开始想要的,你就会得到它,然后我上面的解释你可以弄清楚为什么

高温高压

最好的

耶胡达

于 2013-04-09T07:38:22.530 回答