Как оператор соединить две матрицы в раку-линге? - PullRequest
6 голосов
/ 11 января 2020

Есть ли что-то вроде R-lang columnbind или rowbind в raku. R-lang cbind

например

my @matrix = ^100 .rotor(10);
my @cbind = cbind( @matrix [*;1..2].rotor(2) , @matrix [*;3..4].rotor(2) )
my @rbind = rbind ( @matrix [1..2;*].rotor(10) , @matrix [3..4;*].rotor(10) )

1 Ответ

5 голосов
/ 11 января 2020

rbind просто:

my @one = <a b c d>.rotor(2);
my @two = <e f g h>.rotor(2);
say @one.append: @two;

Обновление : отредактировано благодаря комментарию.

Если порядок не имеет большого значения, вы можете просто используйте ∪, и он превратится в набор.

cbind немного сложнее, но выполнимо:

say (@one Z @two).map( { @_.map: |* } )

Z оператор zip , который будет чередовать элементы первого и второго списка. Но тогда хорошо иметь слишком много вложенных списков, поэтому нам нужно сгладить внутренний список здесь: { @_.map: |* }. Это будет выводить

((a b e f) (c d g h))
...