【发布时间】:2021-12-22 06:54:00
【问题描述】:
假设我有一个列表:
d: 0w 1 2 3
我想在列表中查找并替换 0w。我在想我可以在列表上建立索引来找到它们,返回一个布尔值列表,带有:
d . {x=0w}
但这不起作用。
我做错了什么?如何用更友好的东西替换我的0w?
【问题讨论】:
标签: kdb
假设我有一个列表:
d: 0w 1 2 3
我想在列表中查找并替换 0w。我在想我可以在列表上建立索引来找到它们,返回一个布尔值列表,带有:
d . {x=0w}
但这不起作用。
我做错了什么?如何用更友好的东西替换我的0w?
【问题讨论】:
标签: kdb
如果你想找到每个 0w 的索引,你可以这样做
where 0w=d
然后,如果您想将 d 中的所有实例替换为 4,您可以这样做
d[where 0w=d]:4f
替换条目时请注意类型错误
【讨论】:
where?做d[0w=d]:4f 确实给了我意想不到的行为,但我不知道为什么......
where 返回右侧语句的 True 布尔值的索引。但是,kdb 也会以几乎相同的方式解释 d[0w=d],但这实际上是 d[1000b],因此它为 0 和 1 索引分配了 4f 的值。
对于多个替换,您也可以使用字典:
q)d:0W 1 2 3
q)remap:0W 2!0 22
q)d^remap d
0 1 22 3
将 0W 重新映射为 0 并将 2 重新映射为 22
【讨论】: