any
语法
any(func, args…)
参数
func 是一个函数名。
args 是函数F的参数。它们可以是向量、矩阵或表。它们的数据形式可以不尽相同,但是长度必须相同,即向量中元素的个数,或矩阵中列的数量,或表中行的数量必须相同。
详情
把函数应用到参数的每一个元素。只要函数调用返回true,any 高阶函数就会停止执行,并返回true。如果所有的函数调用都返回false,any 高阶函数将返回false。
如果args是一个矩阵,any模 板将会按列执行;如果args是一个表格,它将会按行执行。
例子
any 高阶函数用于向量:
$ x = 1 2 3 11 12 13 NULL 102 103;
$ y = x cut 3;
$ y;
([1,2,3],[11,12,13],[,102,103])
$ any(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])
$ any(in, 7 8 23, y);
1
// 返回true,因为虽然8不在[15, 11, 197]中, 但7在[1, 25, 7]中
$ any(in, 8 20 19, y);
0
// 8不在[1, 25, 7]中,20不在[15, 11, 197]中并且19不在[16, 18, 23]中
$ any(lt, 4 5 6, 1 2 3);
0
// 检查是否4<1, 5<2并且6<3
$ any(<, 4 5 6, 1 7 3);
1
// 返回true,因为5<7
any 高阶函数用于矩阵,按列遍历。
$ x=1..6$2:3;
$ x;
#0 |
#1 |
#2 |
---|---|---|
1 |
3 |
5 |
2 |
4 |
6 |
$ any(in, 6 1 4, x);
0
$ any(in, 3 4 2, x);
1
// 返回 true,因为4在x的第二列中
any 高阶函数用于数据表,按行遍历。下例中,定义了一个名为 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;
$ any(varscompare, x);
0
$ y=table(1 7 3 as a, 4 5 6 as b);
$ y;
a |
b |
---|---|
1 |
4 |
7 |
5 |
3 |
6 |
$ any(varscompare, y);
1
// 返回true,因为7>5