基于两个数据集生成4×4乘积矩阵的R代码实现问题
解决R中生成向量外积4×4矩阵的问题
你当前用x * y得到4×1结果的原因是:R中向量直接用*是元素对应相乘,只会把两个向量位置相同的元素相乘,输出和原向量长度一致的结果。而你需要的是两个向量的外积——让x的每个元素分别与y的所有元素相乘,生成4×4矩阵,以下是两种实现方法:
方法1:使用outer()函数(推荐)
outer()是R专门用于计算外积的函数,默认运算就是乘法,直接传入两个向量即可:
rm(list = ls()) cat("\014") graphics.off() x <- c(1,2,3,4) y <- c(5,2,1,2) # 生成4×4外积矩阵 result_matrix <- outer(x, y) print(result_matrix)
运行后输出的矩阵为:
[,1] [,2] [,3] [,4] [1,] 5 2 1 2 [2,] 10 4 2 4 [3,] 15 6 3 6 [4,] 20 8 4 8
方法2:矩阵乘法实现
把向量转换为矩阵形态(列矩阵×行矩阵),用矩阵乘法运算符%*%实现:
rm(list = ls()) cat("\014") graphics.off() x <- c(1,2,3,4) y <- c(5,2,1,2) # 将x转为4×1列矩阵,y转为1×4行矩阵 x_col <- matrix(x, ncol = 1) y_row <- matrix(y, nrow = 1) # 矩阵乘法生成4×4结果 result_matrix <- x_col %*% y_row print(result_matrix)
这个方法的原理是:4×1的列矩阵与1×4的行矩阵相乘,结果维度为4×4,每个元素对应x[i] * y[j]。
内容的提问来源于stack exchange,提问作者Joe Bennet
相关产品推荐
相关产品推荐

