2016-01-17 1 views
1

Я думаю, что это должно быть легко, но я застрял в этом на какое-то время. Мне нужно обновить матрицу с каждой петли следующим образом:Как создать пустую матрицу в R и обновить ее с помощью цикла for?

  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)) 
      } 

Как обновить матрицу бб с г после каждого цикла?

Матрица 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 

И я хочу, выход будет выглядеть в бб:

Каждый 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 = []; 
+1

Мы упускаем много информации здесь, как 'beta_OLS 'или' nlag' –

+0

Вы уверены, что именно так вы хотите это сделать? В R, используя цикл for, почти всегда неправильный путь. – Matthew

+0

Результат, который вы показываете и хотите, не соответствует введенному вами дисплею. Как насчет 'as.vector (beta_OLS)'? или 'matrix (as.vector (beta_OLS), ncol = 1)'? – Bhas

ответ

1

Как уже прокомментировал вопрос: не используйте циклы в R! Я долго учился.

whatyouwant <- unlist(split(x=beta_OLS, f=c(rep(1, 4), rep(2, 4)))) 

Это даст вам именованный вектор. Если вам не нравятся имена вы можете избавиться от них:

attributes(whatyouwant) <- NULL 

И если вы действительно хотите, чтобы объявить пустую матрицу это легко, как bb <- matrix()

Смежные вопросы