将一个向量中的每个值与第二个向量中的所有值相乘并创建结果矩阵

时间:2018-10-08 06:30:02

标签: r matrix vectorization matrix-multiplication

假设我有两个向量:

 x <- c(5,10,15,20,25)
 y <- c(10,20,30,40,50,60,70,80,90,100)

我想将x中的每个元素乘以y中的所有值,并创建一个矩阵,因此我将x1-x5作为行,并将y1-y10作为列,并将每个单元格中的值相乘。

所以...

     y1      y2     y3  ...  y10
x1  x1y1    x1y2   x1y3     x1y10
x2  x2y1    x2y2   x2y3     x2y10
x3  x3y1    x3y2   x3y3     x3y10
x4  x4y1    x4y2   x4y3     x4y10
x5  x5y1    x5y2   x5y3     x5y10

或带有值。

    y1    y2    y3  ... y10
x1  50    100   150     500
x2  100   200   300     1000 
x3  150   300   450     1500
x4  200   400   600     2000
x5  250   500   750     2500

我知道如何在for循环中执行此操作,但是有没有一种方法可以在apply语句中执行此操作?

任何建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

您要寻找的是outer

outer(x, y, FUN = "*")

如果要使用加号而不是乘法,可以将*更改为·+·

outer(x, y, FUN = "+")