R的outer函数与外积
2020-01-11 本文已影响0人
城管大队哈队长
今天突然看到一个叫outer
的R函数,发现特别好玩。
> outer(1:4, 1:3, FUN = "paste", sep = ",")
[,1] [,2] [,3]
[1,] "1,1" "1,2" "1,3"
[2,] "2,1" "2,2" "2,3"
[3,] "3,1" "3,2" "3,3"
[4,] "4,1" "4,2" "4,3"
然后在网上查了下其用法,其默认的FUN是乘法,所以其实本身是为了求外积的。外积的公式是这样的
那么我们对应过来如果我们要求1:4和1:3的外积,就是
R出来结果跟我们手动算是一样的
> outer(1:4,1:3)
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 2 4 6
[3,] 3 6 9
[4,] 4 8 12
我们也可以像下面这么做,让我们更好地理解外积。
> outer(1:4, 1:3, FUN = "paste", sep = "*")
[,1] [,2] [,3]
[1,] "1*1" "1*2" "1*3"
[2,] "2*1" "2*2" "2*3"
[3,] "3*1" "3*2" "3*3"
[4,] "4*1" "4*2" "4*3"
当然,这个outer
函数还可以画出久久乘法表
> outer(1:9, 1:9, FUN = "paste", sep = "*")
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] "1*1" "1*2" "1*3" "1*4" "1*5" "1*6" "1*7" "1*8" "1*9"
[2,] "2*1" "2*2" "2*3" "2*4" "2*5" "2*6" "2*7" "2*8" "2*9"
[3,] "3*1" "3*2" "3*3" "3*4" "3*5" "3*6" "3*7" "3*8" "3*9"
[4,] "4*1" "4*2" "4*3" "4*4" "4*5" "4*6" "4*7" "4*8" "4*9"
[5,] "5*1" "5*2" "5*3" "5*4" "5*5" "5*6" "5*7" "5*8" "5*9"
[6,] "6*1" "6*2" "6*3" "6*4" "6*5" "6*6" "6*7" "6*8" "6*9"
[7,] "7*1" "7*2" "7*3" "7*4" "7*5" "7*6" "7*7" "7*8" "7*9"
[8,] "8*1" "8*2" "8*3" "8*4" "8*5" "8*6" "8*7" "8*8" "8*9"
[9,] "9*1" "9*2" "9*3" "9*4" "9*5" "9*6" "9*7" "9*8" "9*9"
还可以把月份和年份连起来一起打印:
> outer(month.abb, 2019:2020, FUN = "paste")
[,1] [,2]
[1,] "Jan 2019" "Jan 2020"
[2,] "Feb 2019" "Feb 2020"
[3,] "Mar 2019" "Mar 2020"
[4,] "Apr 2019" "Apr 2020"
[5,] "May 2019" "May 2020"
[6,] "Jun 2019" "Jun 2020"
[7,] "Jul 2019" "Jul 2020"
[8,] "Aug 2019" "Aug 2020"
[9,] "Sep 2019" "Sep 2020"
[10,] "Oct 2019" "Oct 2020"
[11,] "Nov 2019" "Nov 2020"
[12,] "Dec 2019" "Dec 2020"
参考资料