我正在查看填充说明,并遇到以下示例:即,如果存在无限大,请将其替换为空值,然后使用填充进行填充。
q)fills {(x where x=0W):0N;x} 0N 2 3 0W 0N 7 0W
Output - 0N 2 3 3 3 7 7
我想进一步扩展这个问题,如果输出中的第一个值为Null,然后用默认值1填充它,为此我编写了两个版本的解决方案。
{(x where x=0N):1;x} fills {(x where x=0W):0N;x} 0N 2 3 0W 0N 20 30 0W
1^fills {(x where x=0W):0N;x} 0N 2 3 0W 0N 20 30 0W /- Output - 1 2 3 3 3 20 30 30
这两个是优化版本(我认为这是使用填充的第二个版本)?
还有更好/优化的版本吗?
答案 0 :(得分:1)
您始终可以通过对较大的向量进行计时来测试解决方案
q)\ts {(x where x=0N):1;x} fills {(x where x=0W):0N;x}10000000#0N 2 3 0W 0N 20 30 0W
196 553649552
q)\ts 1^fills {(x where x=0W):0N;x}10000000#0N 2 3 0W 0N 20 30 0W
190 553649216
对于较大的向量,只需将第一项填充为1,就可以得到较小的改进,前提是这是您唯一需要默认设置的项
q)@[;0;1^]fills {(x where x=0W):0N;x}0N 2 3 0W 0N 20 30 0W
1 2 3 3 3 20 30 30
但是,如果开头有一系列空值(不只是一个),那么这将无济于事
q)@[;0;1^]fills {(x where x=0W):0N;x}0N 0N 2 3 0W 0N 20 30 0W
1 0N 2 3 3 3 20 30 30
在这种情况下,最好在整个向量上使用1^
答案 1 :(得分:1)
将1加到无穷大会将其转换为空
.wpcf7 .wpcf7-form .wpcf7-mail-sent-ok {
display: none !important;
}
要保留原始值和空值,请从结果列表中减去1
q)0W 10 0N+1
0N 11 0N
填充可以接受两个参数(如果给两个参数,则起始数字为x)
q)-1+0W 10 0N+1
0N 10 0N
因此完全满足您的要求
q)fills 0N 10 20 0N 40
0N 10 20 20 40
q)fills[33;] 0N 10 20 0N 40
33 10 20 20 40
HTH, 肖恩