我有一个函数f[symbol;date0;date1]
,以及一系列日期,比如说
2017.12.04
2017.12.05
2017.12.06
我想为给定的符号运行此函数 - 假设“AAPL” - 每天一次。实质上:
f[AAPL;2017.12.04;2017.12.04]
f[AAPL;2017.12.05;2017.12.05]
f[AAPL;2017.12.05;2017.12.05]
此函数返回一个表,因此我希望每个日期都附加到以前的结果中。什么是最好的方法呢?
答案 0 :(得分:4)
此表单中函数的最佳方法是以通用格式使用kdb each-both:
d:2017.12.04 2017.12.05 2017.12.06
f'[`AAPL;d;d]
kdb识别原子第一个参数并列出第二个参数,并按顺序将函数应用于每个参数。您也可以使用raze按顺序连接每个表:
raze f'[`AAPL;d;d]
如果模式相同,则然后返回单个连接表。
答案 1 :(得分:2)
假设f为每个调用产生相同的列,那么你可以只调整结果
q)f:{([]1#x;1#y;1#z)};
q)raze f'[`a;3#.z.d;3#.z.d-1]
x y z
-----------------------
a 2018.02.07 2018.02.06
a 2018.02.07 2018.02.06
a 2018.02.07 2018.02.06
结果是一个[更大]的表格,其结果相互附加