尝试使用加号 (+) 运算符添加数值时是否对结果感到困惑? 也许你发现了 Sum() 函数来解决这个问题,但从未真正理解它为什么起作用。 在这篇博文中,我解释了 Add() 函数、加号 (+) 运算符和 Sum() 函数,以帮助您从脚本或列公式中获得所需的结果。

让我们从 Add() 函数开始。 您知道加号 (+) 是 Add() 函数的符号表示吗? 这是! 这意味着以下两个表达式完全相同:
1 + 2; //Returns 3
Add( 1, 2 ); //Returns 3
Add() 函数和加号运算符相加值以计算总值。 参数可以是数字、矩阵或数字列表。
但是如果其中一个值是缺失的数字 (.) 呢? 如果任何参数是缺失值,Add() 函数将返回缺失值。
在前面的示例中,任一表达式的结果都是 3。 在此基础上,如果缺失值是参数之一,那么它将返回缺失值,而不是 3。
1 + . + 2; //Returns missing
Add( 1, ., 2 ); //Returns missing
那么如何获得不包括缺失值的总值呢? 这就是 Sum() 函数的用武之地。 Sum() 函数还将添加值以计算总值,但是,它无视缺失值。
下面是 Sum() 函数的语法。 请注意,参数用逗号分隔,并计算所有非缺失参数的总值。
Sum( 1, ., 2 ); //Returns 3
Sum() 可以返回丢失吗? 嗯,是的,它可以。 当提供给 Sum() 函数的参数是全部缺失值,结果也会缺失。 在此示例中,x 和 y 的值均缺失。
x = y = .;
Sum( x, y ); //Returns missing
并且不要以为您可以使用加号运算符来指定参数而被绊倒。
Sum( 1 + . + 2 ); ); //Returns missing
当你这样做时, JMP将此视为使用 Add() 函数的一个参数。 请记住,当任何参数为缺失值时,Add() 函数返回缺失值:
Sum( Add( 1, ., 2 ) ); //Returns missing
这与此基本相同:
Sum( . ); //Returns missing
如果您将该示例更改为包含两个参数,例如:
Sum( 100, 1 + . + 2 ); //Returns 100
结果为 100,因为参数为 100 且缺失,如下所示:
Sum( 100, . ); //Returns 100
我希望这有助于阐明 Add()、plus (+) 和 Sum() 的用法。