R空気読みすぎだろwww

「3重forループをRで書くと遅いからなー。outer関数の多変数版ないかなー」とか思ってouterをなんとなくネストさせてみたら動いたwwwしかも、outerだから結構早いwww

> outer(outer(1:5,1:5,"+"),1:5,"+")
, , 1

     [,1] [,2] [,3] [,4] [,5]
[1,]    3    4    5    6    7
[2,]    4    5    6    7    8
[3,]    5    6    7    8    9
[4,]    6    7    8    9   10
[5,]    7    8    9   10   11

, , 2

     [,1] [,2] [,3] [,4] [,5]
[1,]    4    5    6    7    8
[2,]    5    6    7    8    9
[3,]    6    7    8    9   10
[4,]    7    8    9   10   11
[5,]    8    9   10   11   12

, , 3

     [,1] [,2] [,3] [,4] [,5]
[1,]    5    6    7    8    9
[2,]    6    7    8    9   10
[3,]    7    8    9   10   11
[4,]    8    9   10   11   12
[5,]    9   10   11   12   13

, , 4

     [,1] [,2] [,3] [,4] [,5]
[1,]    6    7    8    9   10
[2,]    7    8    9   10   11
[3,]    8    9   10   11   12
[4,]    9   10   11   12   13
[5,]   10   11   12   13   14

, , 5

     [,1] [,2] [,3] [,4] [,5]
[1,]    7    8    9   10   11
[2,]    8    9   10   11   12
[3,]    9   10   11   12   13
[4,]   10   11   12   13   14
[5,]   11   12   13   14   15

なんでこういうことができるのか分かった。outerは配列(ベクトルでもリストでもないことに注意)を受け取って配列を返す関数と考えれば別に不思議はないか。