首页 > 解决方案 > 将一个向量中的每个值乘以第二个向量中的所有值并创建结果矩阵

问题描述

假设我有两个向量:

 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 语句中执行此操作?

任何建议将不胜感激。

标签: rmatrixvectorizationmatrix-multiplication

解决方案


您正在寻找的是outer.

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

如果你想用加号代替乘法,你可以*改为·+·

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

推荐阅读