【发布时间】:2020-12-24 16:53:09
【问题描述】:
提前感谢您的帮助。我是 kdb/q 的新手,来自 Python 和 C++ 背景。 只是一个简单的语法问题:我有一个包含字段及其对应值的字符串
pp_str: "field_1:abc field_2:xyz field_3:kdb"
我编写了一个原子(标量)函数来提取给定字段的值。
get_field_value: {[field; pp_str] pp_fields: " " vs pp_str; pid_field: pp_fields[where like[pp_fields; field,":*"]]; start_i: (pid_field[0] ss ":")[0] + 1; end_i: count pid_field[0]; indices: start_i + til (end_i - start_i); pid_field[0][indices]}
show get_field_value["field_1"; pp_str]
"abc"
show get_field_value["field_3"; pp_str]
"kdb"
现在我该如何概括这一点,以便如果我输入一个字段向量,我会得到一个值向量?我想输入(“field_1”;“field_2”;“field_3”)并输出(“abc”;“xyz”;“kdb”)。我尝试了多种方法(如下),但我只是不太了解 kdb/q 的语法,无法对我的函数进行矢量化:
/ Attempt 1 - Fail
get_field_value[enlist ("field_1"; "field_2"); pp_str]
/ Attempt 2 - Fail
get_field_value[; pp_str] /. enlist ("field_1"; "field_3")
/ Attempt 3 - Fail
fields: ("field_1"; "field_2")
get_field_value[fields; pp_str]
【问题讨论】:
标签: string function vectorization kdb