Print a multiplication table with minimal code

心已入冬 提交于 2019-12-29 08:22:09

问题


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?


回答1:


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



回答2:


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


来源:https://stackoverflow.com/questions/10840779/print-a-multiplication-table-with-minimal-code

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!