我认为这应该很容易,但我已经坚持了一段时间。我需要更新每个循环的矩阵,如下所示:
r <- 4
nlag <- 2
for (i in 1:nlag){
a <- ((i-1)*r)+1
b <- i*r
g <- beta_OLS[c(a:b),1:r]
bb <- as.vector(t(g))
}
如何在每次循环后用g更新矩阵bb?
beta_OLS矩阵如下所示:
[1,] 0.603443440 0.30405670 -0.002150462 0.0090527541
[2,] -0.003498807 0.16163517 0.056313146 0.0007139815
[3,] 0.319393118 0.13560199 1.079001883 0.0842017718
[4,] -0.043669654 -0.92507425 -0.173706846 0.9019772828
[5,] 0.259785125 0.04053008 0.036206682 -0.0217682012
[6,] 0.029130279 0.13336440 0.034382991 0.0032809117
[7,] -0.277746555 -0.25636900 -0.173245066 -0.0636151668
[8,] 0.046002342 0.48681546 0.131194993 -0.0563989161
我希望输出在bb中看起来像这样:
每4 X 1部分叠在一起。
0.6034
-0.0035
0.3195
0.0437
0.3041
0.1616
0.1356
0.9251
-0.0022
0.0563
1.0790
0.1737
-0.0091
-0.0007
-0.0842
0.9020
0.2598
0.0291
-0.2778
-0.0460
0.0405
0.1334
-0.2564
-0.4868
0.0362
0.0344
-0.1733
-0.1312
0.0218
-0.0033
0.0636
-0.0564
在R中创建一个空矩阵需要什么,MATLAB代码就这么简单?
bb = [];
答案 0 :(得分:1)
有人已经评论过:不要在R中使用循环!花了我很长时间才学会了自己。
whatyouwant <- unlist(split(x=beta_OLS, f=c(rep(1, 4), rep(2, 4))))
这将为您提供一个命名向量。如果你不喜欢名字,你可以摆脱它们:
attributes(whatyouwant) <- NULL
如果你真的想宣布一个空矩阵,那么它很容易bb <- matrix()