在R中为Matrix分配值

时间:2014-06-24 08:14:26

标签: r matrix assign

我使用read.csv加载了一个数据集。这包含第一行中的标题,然后是不同列中的一堆股票价格。

然后我尝试执行滚动分析(平均值,SD或任何其他简单的统计函数,并在我定义的矩阵中为其分配一个元素)

但是当我写信给csv

时,我一直在为所有细胞获得NA

我的代码

{
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 个答案:

答案 0 :(得分:0)

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