むしゃくしゃしてやった
> as.data.frame(1:9 %*% t(1:9))
V1 V2 V3 V4 V5 V6 V7 V8 V9
1 1 2 3 4 5 6 7 8 9
2 2 4 6 8 10 12 14 16 18
3 3 6 9 12 15 18 21 24 27
4 4 8 12 16 20 24 28 32 36
5 5 10 15 20 25 30 35 40 45
6 6 12 18 24 30 36 42 48 54
7 7 14 21 28 35 42 49 56 63
8 8 16 24 32 40 48 56 64 72
9 9 18 27 36 45 54 63 72 81
後悔はしていない。
というのは冗談ですが、data.frame()
で同じことをやると、変数名がx1,x2,...,x9
になります。
そっちの方が九九の表っぽいですが、おそらくそちらの方が遅いのでas.data.frame()
でやっています。
Rに限らず、もっとイイ感じの書き方があれば、ぜひ教えてください。
いわゆる100マス計算と、その答え合わせに
> (((d<-as.data.frame(sample(9,9) %*% t(1:9))) %>% `rownames<-`(d[,1]) -> d)[,sample(9,9)] -> d)*0
V5 V2 V9 V4 V3 V6 V7 V1 V8
5 0 0 0 0 0 0 0 0 0
7 0 0 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0 0 0
8 0 0 0 0 0 0 0 0 0
9 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0
6 0 0 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0 0 0
> d
V5 V2 V9 V4 V3 V6 V7 V1 V8
5 25 10 45 20 15 30 35 5 40
7 35 14 63 28 21 42 49 7 56
2 10 4 18 8 6 12 14 2 16
4 20 8 36 16 12 24 28 4 32
8 40 16 72 32 24 48 56 8 64
9 45 18 81 36 27 54 63 9 72
1 5 2 9 4 3 6 7 1 8
6 30 12 54 24 18 36 42 6 48
3 15 6 27 12 9 18 21 3 24
ワンライナー的には反則かもしれません。。。
0を空白にしたかったのですが、すぐに思いつかず、0だけであきらめました。
最後の0を取れば、dがただちに出ます。
これ、足し算だと逆に出しにくいというのがアレな感じですね。
(要素ごとに演算を適用すればすぐ出る気もしますが)