如何使用累加器将多张表相加?Kdb+表运算问题
问题解决方法
错误原因分析
**
(+/)func[AAPLMSFTTSLA]报错原因**: 你的func仅接受单个符号参数,直接传入符号列表时,func会把整个列表当作单一参数处理,而非逐个解析符号生成表。最终func返回的结果不是预期的表列表,导致累加操作失败,抛出'MSFT`错误。**
funcAAPL + funcMSFT + funcTSLA报错原因**: KDB+的语法优先级中,func arg形式的函数调用优先级高于加法运算符。这行代码会被解析为func(AAPL + funcMSFT) + funcTSLA,符号与表相加触发类型不匹配,从而抛出type错误。
可行解决方案
方案一:用
each批量生成表列表后累加
通过each遍历符号列表,让func逐个处理每个符号,生成表的列表后再用(+/)累加:(+/)func each `AAPL`MSFT`TSLA等价于先执行
tables:func eachAAPLMSFTTSLA得到表列表,再执行(+/)tables`,和你先赋值变量再相加的逻辑完全一致。方案二:用括号强制指定运算优先级
给每个func调用加上括号,确保先生成每张表再执行加法操作:(func`AAPL) + (func`MSFT) + (func`TSLA)
内容的提问来源于stack exchange,提问作者homelessmathaddict
相关产品推荐
相关产品推荐

