假设我有两个向量:
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语句中执行此操作?
任何建议将不胜感激。
答案 0 :(得分:1)
您要寻找的是outer
。
outer(x, y, FUN = "*")
如果要使用加号而不是乘法,可以将*
更改为·+·
outer(x, y, FUN = "+")