You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R数据框中实现行向量与相关矩阵的二次型计算

在R中对数据框每行执行二次型矩阵乘法并新增结果列

需求说明:对数据框的每一行,将该行元素组成的1×6行向量,与一个6×6的相关矩阵相乘,再与该行向量的转置(6×1)相乘得到单个数值结果;最终将所有行的结果新增为数据框的一列。

示例数据与相关矩阵

首先构造示例数据框和指定的相关矩阵:

# 构造示例数据框
A <- c(2,3,4,5,6)
B <- c(4,5,6,7,8)
C <- c(6,7,8,9,10)
D <- c(8,9,10,11,12)
E <- c(10,11,12,13,14)
F <- c(12,13,14,15,16)

df <- data.frame(A,B,C,D,E,F)

# 定义6×6相关矩阵
corr <- matrix(       
    c(1,0,0,0,0,0,
      0,1,0,0,0,0,
      0,0,1,.6,.6,.5,
      0,0,.6,1,.6,.7,
      0,0,.6,.6,1,.6,
      0,0,.5,.7,.6,1),
    nrow = 6, ncol = 6, byrow = TRUE) 

实现方法

方法1:逐行计算(直观易懂)

使用apply函数遍历数据框的每一行,对每行执行矩阵乘法:

# 新增result列存储计算结果
df$result <- apply(df, 1, function(row) {
  # 执行二次型矩阵乘法:行向量转置 × 相关矩阵 × 行向量
  t(row) %*% corr %*% row
})

方法2:整体矩阵运算(高效)

当数据量较大时,整体矩阵运算的效率远高于逐行循环:

# 将数据框转换为矩阵格式
X <- as.matrix(df)
# 计算所有行的二次型结果,提取对角线值(每行自身的计算结果)
df$result <- diag(X %*% corr %*% t(X))

结果验证

以第一行[2,4,6,8,10,12]为例,计算结果为639.2,可通过以下代码单独验证:

row1 <- c(2,4,6,8,10,12)
t(row1) %*% corr %*% row1

内容的提问来源于stack exchange,提问作者1forest1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 09:02:56