1

如何在 k 中正确应用一元函数和投影?

KDB+ 3.6 2018.05.17 Copyright (C) 1993-2018 Kx Systems
q) \
  (5*;10*)@\:2
10 20
  ({x};{x*x})@\:2
2 4
  (#;#)@\:2
(#[2];#[2])

为什么 2 个第一个示例可以正常工作,而最后一个不能?我以为会是:

  (#;#)@\:2
1 1

但这给了我一个奇怪的结果。

4

3 回答 3

1

知道了!

q)\
  (#;#)@\:2
(#[2];#[2])
  (#:;#:)@\:2
1 1
于 2020-03-13T11:58:50.797 回答
1

为了完整起见,这与此处记录的一元形式有关:https ://code.kx.com/q/basics/exposed-infrastructure/#unary-forms

于 2020-03-13T12:11:32.060 回答
1

# ( take ) 是一个二元函数,不像 count 是一元函数。这就是为什么你在只应用一个参数时得到一个投影的原因。

q)count
#:
q)type (count)
101h
q)type (#)
102h

您可以使用 . 具有两个操作数的二元函数上的( dot-apply ) 运算符返回不是投影的结果。

(#;#) .\: (3;til 10)
0 1 2
0 1 2
于 2020-03-14T15:16:23.903 回答