首页 > 解决方案 > 使用 for 循环在 R 中求解矩阵

问题描述

我正在尝试解决 RI 中的矩阵有 3 个这样的矩阵Uf[11,3]Uft[3,11]AT[3,3]。对于前两个 11 行和列表示我要使用的 11 个不同的值。最后我需要达到 11 个不同的“D”

values.D = (11/3) * Uft * AT * Uf

但是如果我用 for 循环尝试这个,我有 [11,11] 矩阵。所以这是问题所在,我怎样才能得到 [11,1] 或 [1,11] 矩阵来查看我的 D 结果。当我尝试此代码时,我也收到此错误“下标越界”。

for (i in 1:11) {
  print((1/3) * 11 * Uft[[,i]] %*% Uf[[i, ]] %*% AT[[,]])
}

应该有 11 个 ui 向量来计算“D”数据。但是我有 (3,11) 矩阵而不是 11 个 ui 向量。

***Here is my Ut matrix(combination of ui).Uft is transpose of Uf.

现在我想使用 Uft 的每一行和 Uf 的每一列和所有 AT 来计算 11 个不同的“D”。

标签: rmatrixmatrix-multiplication

解决方案


我认为您有几个语法错误需要检查:

  • 您应该使用[]而不是[[]]矩阵索引
  • drop = FALSE应该设置

例如

for (i in 1:11) {
  print(11 / 3 * Uft[, i, drop = FALSE] %*% Uf[i, , drop = FALSE] %*% AT)
}

推荐阅读