0

我不是高级用户,但我已经尝试解决这个问题好几个小时了,我不知道该怎么做。

设置:我有一个 2X10000 矩阵,它由 2 个变量的 10000 次重复组成,分别在第 1 行和第 2 行中将它们称为 a 和 b。我需要对每一列重复一个操作(即 10000 次),因此需要循环。操作如下:对于每一列 [ab]',创建一个 2x2 矩阵,如下所示:

[a  b]
[b  a]

然后转置该矩阵并将其乘以原始列列。最后,对于每个原始列 [ab]',我应该获得另一列,但具有两个不同的值。

我构建了 2x10000 矩阵来包含结果:

R <- 10000
a <- matrix(rep(1, 200), nrow=2, ncol=R)

Gamma 是我正在使用其列的 2x10000 矩阵。然后我应用以下循环:

for (j in 1:R) {
  Big_Gamma = matrix(c(Gamma[1, j], Gamma[2, j], Gamma[2, j], Gamma[1, j]), nrow=2, ncol=2);
  a <- solve(Big_Gamma)%*%Gamma[, j];
}

Big_Gamma 是我需要反转并乘以原始向量的 2x2 矩阵。同样,我需要为 10000 个向量中的每一个都完成此操作,并且我需要另一个向量(与原始向量具有相同的维度)作为输出(如果可能)。我尝试了不同的规范,也以我提取列的方式,但它总是只运行一次(即矩阵 a 改变并变成 2x1 的)

我在各个网站上寻找了几个小时,但找不到答案。我希望这个问题不要太愚蠢。提前谢谢你,太棒了!

4

1 回答 1

0

您正在覆盖a每次迭代。尝试:

R <- 10000
a <- matrix(rep(1, 200), nrow=2, ncol=R)
for (j in 1:R) {
  Big_Gamma = matrix(c(Gamma[1, j], Gamma[2, j], Gamma[2, j], Gamma[1, j]), nrow=2, ncol=2);
  a[, j] <- solve(Big_Gamma)%*%Gamma[, j];
}
于 2013-04-18T17:23:51.837 回答