Добавьте два списка строк вместе в KDB

#kdb

Вопрос:

Я пытаюсь сложить два списка строк вместе. например:

Имя: Уильям Джозеф Чарльз Дэвид Майкл Уильям

Фамилия: Джонс Браун Джонсон Родригес Родригес Уилсон

и мне нужен full_name список. Как я мог это сделать?

Я попытался просто добавить запятую

 full_name:firstName,lastName
 

и

 full_name:""sv(firstName;lastName)
 

но они, похоже, работают только с одной строкой, а не со списком.

Кто-нибудь знает, как суммировать 2 списка и получить третий?

Ответ №1:

Я думаю, было бы хорошо, если бы вы опубликовали пример именно того, что вы ищете. Кроме того, в целом, не рекомендуется использовать _ в именах переменных, так как это может быть ошибочно принято за drop оператор

Одним из способов получения списка полных имен было бы разбиение обоих списков на " " разделитель, используя vs затем листание результатов и их объединение с помощью sv оператора.
Это будет работать только в том случае, если в фамилии столько же элементов, сколько и в полном имени.

 q)firstName:"William Joseph Charles David Michael William"
q)lastName:"Jones Brown Johnson Rodriguez Rodriguez Wilson"
q)show fullName:" " sv' flip " " vs' (firstName;lastName)
"William Jones"
"Joseph Brown"
"Charles Johnson"
"David Rodriguez"
"Michael Rodriguez"
"William Wilson"
 

Ответ №2:

Если Имя и фамилия уже являются списками строк формы одинаковой длины:

 q)("William";"Joseph";"Charles")
"William"
"Joseph"
"Charles"
 

затем вы можете использовать каждый итератор для этого, например:

 firstName {" " sv (x;y)}' lastName