You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kdb+中nprev函数传入动态列参数遇类型不匹配问题求助

解决kdb+中nprev函数动态传入列参数的类型不匹配问题

原函数nprev:{y til[count y]-\:1+til x}仅支持传入单个整数作为x参数,当传入列(向量)时,til x会因无法处理向量输入抛出type: Mistmatched types错误——这是因为til函数要求输入为单个整数,而非列表/向量类型。

修改后的函数实现

nprev:{[x;y] y each (til count y) -\: (1+til') x}

代码说明

  • til' x:对x的每个元素单独执行til操作,生成对应长度的序列(比如x为0 1 2时,输出() (0) (0 1))
  • 1+til' x:为每个序列元素加1,得到需要回溯的步数序列
  • (til count y) -\: (1+til') x:逐行计算每个位置需要取的元素索引(当前行索引减去回溯步数)
  • y each ...:根据计算出的索引,从y中取出对应元素,生成每行的结果列表

测试示例

t:([] numb:0 1 2 3 4; symb:`LA`NY`LA`LA`CH);
t:update npre:nprev[numb;symb] from t;
t

执行后输出:

numb symb npre
--------------
0    LA   ``
1    NY   ,`LA
2    LA   `NY`LA
3    LA   `LA`NY`LA
4    CH   `LA`LA`NY`LA

内容的提问来源于stack exchange,提问作者vicefreak04

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 07:43:53