all

语法

all(func, args…)

参数

func 是一个函数名。

args 是函数func的参数。它们可以是向量、矩阵或表。它们的数据形式可以不尽相同,但是长度必须相同,即向量中元素的个数,或矩阵中列的数量,或表中行的数量需要相同。

详情

把函数应用到参数的每一个元素。只要函数调用返回false,all 高阶函数就会停止执行,并返回false。如果所有的函数调用都返回true,all 高阶函数将返回true。

如果args是一个矩阵,all 高阶函数将会按列执行;如果args是一个表格,它将会按行执行。

例子

all 高阶函数用于向量。

$ x = 1 2 NULL 11 NULL 13 NULL 102 103;
$ y = x cut 3;
$ y;
([1,2,],[11,,13],[,102,103])

$ all(hasNull, y);
1
// 检查是否 [1,2,],[11,,13],[,102,103]都含有 NULL值

$ x = 1 25 7 15 11 197 16 18 23;
$ y = x cut 3;
$ y;
([1,25,7],[15,11,197],[16,18,23])

$ all(in, 7 11 23, y);
1
// 检查是否 7在[1, 25, 7] 中, 11在[15,11,197] 中以及 23在[16,18,23]中。

$ all(in, 7 8 23, y);
0
// 由于8不在[15, 11, 197]中,返回false

$ all(lt, 1 2 3, 4 5 6);
1
// 检查是否 1<4, 2<5 以及3<6

$ all(lt, 1 2 7, 4 5 6);
0
//返回false,因为7>6

all 高阶函数作用在矩阵上,按列遍历。

$ x=1..6$2:3;
$ x;

#0

#1

#2

1

3

5

2

4

6

$ all(in, 1 4 5, x);
1

$ all(in, 1 2 5, x);
0
// 返回 false,因为2不在x的第二列中

all 高阶函数作用在表上,按行遍历。下例中,定义了一个名为 varscompare 的函数用于比较表中的两个变量。

$ x=table(1 2 3 as a, 4 5 6 as b);
$ x;

a

b

1

4

2

5

3

6

$ def varscompare(t):t.a<t.b;
$ all(varscompare, x);
1

$ y=table(1 7 3 as a, 4 5 6 as b);
y;

a

b

1

4

7

5

3

6

$ all(varscompare, y);
0
// 返回 false,因为7>5