如何替换 KDB 列表中的项目?

How do I replace items in a list in KDB?

假设我有一个列表:

d: 0w 1 2 3

我想查找并替换列表中的 0w。我在想我可以在列表中建立索引来找到它们,返回一个布尔值列表,其中:

d . {x=0w}

但这没有用。

我做错了什么?如何用更友好的东西替换我的 0w

如果你想找到每个 0w 的索引,你可以这样做

where 0w=d

然后如果你想把它在 d 中的所有实例替换为,比如 4,你可以这样做

d[where 0w=d]: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