Как обновить столбец таблицы, который является типом списка на основе диапазона индексов списка?
образец таблицы
tab:([] date:2024.01.01+til 30;sym:30?`appl`msgt`googl;volume:30#(enlist 0.5+300?til 100));
Давайте просто поработаем со строкой 1 в текущем примере, чтобы было проще.
exec first volume from tab where i=0 //300
Теперь мы хотим запросить и обновить вкладку таблицы, чтобы пользователь передавал начальный индекс и конечный индекс, взял его и обновил том с табуляции до нуля 0 для этого диапазона индексов.
У нас есть 300 значений в столбце объема для первой строки, например. , скажем, пользователь передает start:100;end:200, поэтому здесь нам нужно сделать индекс от 100 до 200 равным нулю в столбце тома, где это первая строка или любая заданная строка.
Я пытался решить эту проблему путем индексации списка, но он работает для одного индекса, но не работает для диапазона индексов в операторе обновления.
Используя . исправить
q){[start;end] .[tab;(::;`volume;start+til end-start);:;0f]}[100;200]
Это установит индексы от 100 до 200 как 0f в каждой строке volume
.
Спасибо Cathal за ваше решение, оно очень помогло.