r - 将一个向量中的每个值乘以第二个向量中的所有值并创建结果矩阵
问题描述
假设我有两个向量:
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 语句中执行此操作?
任何建议将不胜感激。
解决方案
您正在寻找的是outer
.
outer(x, y, FUN = "*")
如果你想用加号代替乘法,你可以*
改为·+·
outer(x, y, FUN = "+")
推荐阅读
- javascript - ajax调用后如何触发脚本
- flutter - 使用 NetworkImage 显示来自 Google Drive 的图像
- vba - 将单词“and”添加到消息框中的列表中
- pandas - 数字是csv中的字符串?
- python - 如何将两列(第一列具有相同的值)插入数据框
- optaplanner - 尝试本地搜索时出现 JBoss 工作台异常
- python - 如何更有效地在 Python 中压缩 jpeg?
- laravel - 在前端使用 API 时如何处理 x-amzn-remapped-authorization?
- python - 在python中,带有所有元素的切片和它本身有什么区别?
- vue.js - 来自 vuex 故事的 getter 不显示数据