Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
q/KDB-nprev函数,用于获取之前的所有n个元素_Kdb - Fatal编程技术网

q/KDB-nprev函数,用于获取之前的所有n个元素

q/KDB-nprev函数,用于获取之前的所有n个元素,kdb,Kdb,我正在努力在KDB中编写nprev函数xprev函数返回第n个元素,但我需要相对于当前元素的所有prevn元素 q)t:([] i:1+til 26; s:.Q.a) q)update xp:xprev[3;]s,p:prev s from t 非常感谢您的帮助。xprev功能基本上如下所示: xprev1:{y til[count y]-x} //readable xprev 我们可以调整它以获得所有n元素 nprev:{y til[count y]-\:1+til x} 在查询

我正在努力在KDB中编写
nprev
函数
xprev
函数返回第n个元素,但我需要相对于当前元素的所有prev
n
元素

q)t:([] i:1+til 26; s:.Q.a)

q)update xp:xprev[3;]s,p:prev s from t

非常感谢您的帮助。

xprev功能基本上如下所示:

xprev1:{y til[count y]-x}    //readable xprev
我们可以调整它以获得所有
n
元素

nprev:{y til[count y]-\:1+til x}
在查询中使用
nprev

q)update np: nprev[3;s] , xp1:xprev1[3;s] , xp: xprev[3;s], p:prev[s]  from t
i  s np    xp1 xp p
-------------------
1  a "   "         
2  b "a  "        a
3  c "ba "        b
4  d "cba" a   a  c
5  e "dcb" b   b  d
6  f "edc" c   c  e
k相当于
nprev

k)nprev:{$[0h>@y;'`rank;y(!#y)-\:1+!x]}
类似地,
nnext
看起来

k)nnext:{$[0h>@y;'`rank;y(!#y)+\:1+!x]}

xprev
函数基本上如下所示:

xprev1:{y til[count y]-x}    //readable xprev
我们可以调整它以获得所有
n
元素

nprev:{y til[count y]-\:1+til x}
在查询中使用
nprev

q)update np: nprev[3;s] , xp1:xprev1[3;s] , xp: xprev[3;s], p:prev[s]  from t
i  s np    xp1 xp p
-------------------
1  a "   "         
2  b "a  "        a
3  c "ba "        b
4  d "cba" a   a  c
5  e "dcb" b   b  d
6  f "edc" c   c  e
k相当于
nprev

k)nprev:{$[0h>@y;'`rank;y(!#y)-\:1+!x]}
类似地,
nnext
看起来

k)nnext:{$[0h>@y;'`rank;y(!#y)+\:1+!x]}

通过反复应用
prev
并翻转结果,可以获得所需的结果

q)n:3
q)select flip 1_prev\[n;s] from t
s
-----
"   "
"a  "
"ba "
"cba"
"dcb"
"edc"
..

如果
n
远小于行数,这将比一些更简单的解决方案更快。

您可以通过反复应用
prev
并翻转结果来实现所需的结果

q)n:3
q)select flip 1_prev\[n;s] from t
s
-----
"   "
"a  "
"ba "
"cba"
"dcb"
"edc"
..

如果
n
远小于行数,这将比一些更简单的解决方案更快。

这里还记录了一些通用滑动窗口功能:这里还记录了一些通用滑动窗口功能: