In R, what is the fastest way(shortest code) to print multiplication table?
The functions seq rep and the bind functions help, but I'm looking for the shortest line(s) of code to do this.
rbind("1\'s"=1:12, "2\'s"=seq(2,24,2), "3\'s"=seq(3,36,3),
"4\'s"=seq(4,48,4), "5\'s"=seq(5,60,5), "6\'s"=seq(6,72,6))
Prints the 1's through 6's going across (horizontally). Anyone know how to perform this in a more compact way?
tbl <- outer(1:6, 1:12, "*")
rownames(tbl) <- paste(1:6, "'s", sep="")
tbl
You could make slightly more compact by using paste0(1:6, "'s")
This seems a slight improvement:
> v<-setNames(1:6, paste0(1:6, "\'s"))
> v %o% v
1's 2's 3's 4's 5's 6's
1's 1 2 3 4 5 6
2's 2 4 6 8 10 12
3's 3 6 9 12 15 18
4's 4 8 12 16 20 24
5's 5 10 15 20 25 30
6's 6 12 18 24 30 36
A shortcut for outer(1:6, 1:12, "*")
:
> 1:6 %o% 1:12
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
[1,] 1 2 3 4 5 6 7 8 9 10 11 12
[2,] 2 4 6 8 10 12 14 16 18 20 22 24
[3,] 3 6 9 12 15 18 21 24 27 30 33 36
[4,] 4 8 12 16 20 24 28 32 36 40 44 48
[5,] 5 10 15 20 25 30 35 40 45 50 55 60
[6,] 6 12 18 24 30 36 42 48 54 60 66 72