Конкретный список векторов в q - PullRequest
0 голосов
/ 22 сентября 2018

У меня есть два следующих списка:

x:(("AA";"AA");("BB";"BB"))
y:(("11";"11");("22";"22"))

Я нацеливаюсь на этот результат:

z = (("AA11"; "AA11"); ("BB22"; "BB22 "))

Я пробовал:

x,'y 

, но это приводит к тому, что все векторы соединены не подвектором.

Ответы [ 2 ]

0 голосов
/ 22 сентября 2018

Более общее решение, использующее .z.s и each-both, когда вы не уверены во вложенных уровнях:

q)f:{$[10h=type x;x,y;.z.s'[x;y]]}

q)x:(("AA";"AA");("BB";"BB"))
q)y:(("11";"11");("22";"22"))

q)f[x;y]
(("AA11";"AA11");("BB22";"BB22"))


q)x:((("AA";"AA");("BB";"BB"));(("CC";"CC");("DD";"DD")))
q)y:((("11";"11");("22";"22"));(("33";"33");("44";"44")))

q)f[x;y]
((("AA11";"AA11");("BB22";"BB22"));(("CC33";"CC33");("DD44";"DD44")))
0 голосов
/ 22 сентября 2018

Поскольку списки являются вложенными, вам нужно использовать each-both дважды:

q)x,''y
(("AA11";"AA11");("BB22";"BB22"))

Или, если вам не нужна структура, вы можете сначала raze ее и использовать один each-both

q)raze[x],'raze[y]
("AA11";"AA11";"BB22";"BB22")
...