KDBQ中最简单的过滤器函数实现是什么?
许多函数式语言都有内置的方法来定义列表中的元素。除非我遗漏了什么,否则Q似乎没有任何这样的内置方法。这让我感到惊讶,因为过滤器在许多函数式语言中都是一个重要的高阶函数 假设我想过滤掉列表1 0 2 3 0 4中的所有0。筛选后的结果列表应为1 2 3 4。目前,我通过以下方式在Q中实现了这一点:KDBQ中最简单的过滤器函数实现是什么?,kdb,Kdb,许多函数式语言都有内置的方法来定义列表中的元素。除非我遗漏了什么,否则Q似乎没有任何这样的内置方法。这让我感到惊讶,因为过滤器在许多函数式语言中都是一个重要的高阶函数 假设我想过滤掉列表1 0 2 3 0 4中的所有0。筛选后的结果列表应为1 2 3 4。目前,我通过以下方式在Q中实现了这一点: raze{eval(?;(not;(=;x;0));x;())}peach 1 0 2 3 0 4 这为我提供了所需的结果,但在确定所发生的一切都是过滤器时,阅读起来有点不方便 我可以用它创建我自己的
raze{eval(?;(not;(=;x;0));x;())}peach 1 0 2 3 0 4
这为我提供了所需的结果,但在确定所发生的一切都是过滤器时,阅读起来有点不方便
我可以用它创建我自己的过滤函数,但我想知道是否有我遗漏的东西。有没有一种传统的方法来过滤语言中内置的Q?
,如果您只考虑列表,则除此之外
应该是您要查找的关键字
发件人:
返回列表x中不是列表或原子y的所有项
除非
应该是您要寻找的关键字,如果您只考虑列表的话
发件人:
返回列表x中不是列表或原子y的所有项
如果您想使用通配符进行模式搜索,那么您可能需要像使用一样使用
例如,获取以6结尾的所有元素
q)l2:("a01";"b02";"c03";"f06";"z26")
q)l2 where l2 like "*6"
("f06";"z26")
说明:
1) 搜索以6
结尾的字符串like
将返回布尔向量
q)l2 like "*6"
00011b
2) 现在获取索引,其中
向量元素为true
q)where l2 like "*6"
3j, 4j
3) 获取找到匹配项的元素
q)l2 where l2 like "*6"
("f06";"z26")
如果您想使用通配符进行模式搜索,那么您可能需要像使用
一样使用
例如,获取以6结尾的所有元素
q)l2:("a01";"b02";"c03";"f06";"z26")
q)l2 where l2 like "*6"
("f06";"z26")
说明:
1) 搜索以6
结尾的字符串like
将返回布尔向量
q)l2 like "*6"
00011b
2) 现在获取索引,其中
向量元素为true
q)where l2 like "*6"
3j, 4j
3) 获取找到匹配项的元素
q)l2 where l2 like "*6"
("f06";"z26")
有一些由Aaron Davies编写的过滤器函数的实现,可能对不同的用例有用
一个例子:
q) filter[1有一些由Aaron Davies编写的filter函数的实现,可能对不同的用例有用
一个例子:
q) 滤器[1这绝对是针对我的特定示例的最佳解决方案,我也曾在该案例中使用过。我选择nyi的答案,因为它最简洁地适用于一般过滤案例。这绝对是针对我的特定示例的最佳解决方案,我也曾在该案例中使用过。我选择nyi的答案,因为它最简洁地适用于一般过滤案例。