#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"])
}
}
}