2013-04-18 57 views
0

我不是高级用户,但我一直试图解决这个问题好几个小时了,我不知道该怎么办。R:提取循环中的部分矩阵 - 循环只运行一次

设置:我有一个2X10000矩阵,它由10000个重复的2个变量组成,分别在第1行和第2行称为a和b。 我需要对每列重复操作(即10000次),因此循环。 的操作是以下操作: 每列[A B]”中,创建一个2×2矩阵看起来像这样:

[a b] 
[b a] 

然后转置该矩阵以及由原始列列相乘。最后,我应该为每个原始列[a b]获得另一列,但是有两个不同的值。

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

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

伽玛是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个矢量中的每一个完成此操作,并且需要另一个矢量(与原始矢量等维)作为输出(如果可能)。 我尝试了不同的规格,也是在我提取列的方式,但它总是只运行一次(即矩阵中的变化,变成了2×之一)

我找了好几个小时在各种网站和不能找到答案。我希望这个问题不是太愚蠢。 预先感谢您,太多了!

回答

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]; 
} 
+0

非常感谢!我知道我在提取参数上做错了什么。我试图重新洗牌已经存在的那些,而不是将它添加到一个。非常感激! – Tsutomuchan