KDB/Q 序列生成类似于R的seq(from, to, step)
KDB/Q sequence generation similar to R's seq(from, to, step)
有没有办法用给定的步骤生成数字序列,类似于 R 的 seq(from, to, step) 函数?
例如
> seq(1,20,2)
[1] 1 3 5 7 9 11 13 15 17 19
简单地使用算术:-)
q){[step;start;length] start+step*til length}[2;0;10]
0 2 4 6 8 10 12 14 16 18
q){[step;start;length] start+step*til length}[3;0;10]
0 3 6 9 12 15 18 21 24 27
user2393012 的答案很接近,但不完全是在寻找什么问题。以下效果很好-
q)seq:{x+z*til ceiling(1+y-x)%z}
q)seq[1;20;2]
1 3 5 7 9 11 13 15 17 19
替代方案(但不比更简单的算术解决方案更好)
q){-1_(y>=)(z+)\x}[1;20;2]
1 3 5 7 9 11 13 15 17 19
另一个选项( 的细微变化):
q) {(z+)\[floor(y-x)%z;x]} [1;20;2]
1 3 5 7 9 11 13 15 17 19
有没有办法用给定的步骤生成数字序列,类似于 R 的 seq(from, to, step) 函数?
例如
> seq(1,20,2)
[1] 1 3 5 7 9 11 13 15 17 19
简单地使用算术:-)
q){[step;start;length] start+step*til length}[2;0;10]
0 2 4 6 8 10 12 14 16 18
q){[step;start;length] start+step*til length}[3;0;10]
0 3 6 9 12 15 18 21 24 27
user2393012 的答案很接近,但不完全是在寻找什么问题。以下效果很好-
q)seq:{x+z*til ceiling(1+y-x)%z}
q)seq[1;20;2]
1 3 5 7 9 11 13 15 17 19
替代方案(但不比更简单的算术解决方案更好)
q){-1_(y>=)(z+)\x}[1;20;2]
1 3 5 7 9 11 13 15 17 19
另一个选项(
q) {(z+)\[floor(y-x)%z;x]} [1;20;2]
1 3 5 7 9 11 13 15 17 19