有没有办法
PadRight[a \[PlusMinus] b,2,""]
返回
{a \[PlusMinus] b,""}
而不是
a \[PlusMinus] b \[PlusMinus] ""
我相信我需要以某种方式停用[PlusMinus]的运算符属性。
为什么我需要这个?
我正在创建一个程序来显示具有物理量的表格。对我来说,这意味着带有条目的表格 (a的值)[PlusMinus](a的不确定性)
当我有几个不同高度的列时,我用“”填充较短的列,所以我可以使用Transpose
表格的数字部分。
如果列有多个entrie,则没有问题:
PadRight[{a \[PlusMinus] b,c \[PlusMinus] d},4,""]
给出我想要的东西:
{a \[PlusMinus] b,c \[PlusMinus] d,"",""}
当列只有一个entrie时,我的问题出现了。
这是构造用“”:
填充的主体的代码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,...}
数量是我想要的数量。
由于
答案 0 :(得分:1)
首先你需要知道Mathematica中的任何表达式都是Head [Body]的形式 body可以为空,单个表达式或用逗号分隔的表达式序列 长度对表达式进行操作,不一定是列表 所以 长度[PlusMinus [A,B]] 返回2,因为表达式的主体包含表达式(在本例中为原子),即a和b
阅读PadRight上的文档。第二个参数定义表达式的最终长度 所以 PadRight [{a,b},4,c]得到一个长度为4的列表,其中最后两个元素等于 PadRight [{a,b},2,c]与原始列表一起生成,因为它已经是长度为2 因此 PadRight [PlusMinus [a,b],2,任何东西]只返回相同的PlusMinus [a,b],因为它已经是长度2 所以,你首先的例子是错的。当您尝试使用头部PlusMinus填充表达式时,无法使用PadRight获取头部列表的结果
没有执行问题 PadRight [PlusMinus [A,B],3 “”] 但结果看起来很有趣(充其量)并且在逻辑上毫无意义,但如果这是你想要的第一个你得到它,并按照上面的解释你可以找出原因
HTH
最好的
胡达