Присвоение значения матрице в R

#r #matrix #assign

#r #матрица #присвоить

Вопрос:

Я загрузил набор данных, используя read.csv. Это содержит заголовки в первой строке, а затем кучу цен на акции в разных столбцах.

Затем я пытаюсь выполнить скользящий анализ (среднее значение, SD или любую другую простую статистическую функцию и присвоить ей элемент в матрице, которую я определил)

Однако я продолжаю получать NA для всех ячеек, когда я пишу в csv

Мой код

 {
APD = read.table(file="C:\Path\Pasted Data Temp.csv",head=TRUE,sep=",",blank.lines.skip = TRUE,row.names = NULL);
DMA = matrix(nrow=dim(APD)[1] 25,ncol=dim(APD)[2] 25)
a = ncol(APD);
DMAno = 20; 
for(i in 3:a) {
z = length(APD[1])
for(j in DMAno:z)
    {
    DMA[[i][j]] <- mean(APD$ABNL[j-DMAno 2:j])
    }
}
}
 

Комментарии:

1. Использование zoo и rollapply

Ответ №1:

Как предположил agstudy, rollapply, вероятно, является лучшим вариантом, поскольку он будет чрезвычайно быстрым.

Что касается вашего кода: вам нужны некоторые скобки, (j-DMAno 2):j а в R один подмножество матрицы несколько по-другому, а именно i-й столбец и j-я строка DMA доступны через DMA[j,i] . data.frame$x[] создает некоторое избыточное подмножество. Попробуйте это:

 for(i in 3:a) {
  z = length(APD[1])
  for(j in DMAno:z)
      {
      DMA[j,i] <- mean(APD[(j-DMAno 2):j,"ABNL"])
      }
  }
}