我的简单代码是:
library(kernlab)
zoo <- matrix(sample(1:10, 240*7200, replace = TRUE), 240, 7200)
mx=data.frame(matrix(ncol = 2, nrow =30))
mx[1,1]=0
mx[1,2]=1
m=0
mm=1
for (i in 1:30){
m=m+length(zoo[,1])
mx[i+1,1]=m
mm=mm+length(zoo[,1])
mx[i+1,2]=mm
}
以上代码是创建mx
的第一部分。
ram=data.frame(matrix(ncol = 30, nrow = length(zoo[,1])))
for (i in 1:30){
A<-zoo[,c(mx[i,2]:mx[i,1]+length(zoo[,1]))]
sc <- specc(A,data=kernelMatrix,centers=2)
ram[,i]=data.matrix(sc@.Data)
}
这部分给出了
Error in zoo[, c(mx[i, 2]:mx[i, 1] + length(zoo[, 1]))] :
subscript out of bounds
如果我从i in 1:29
运行它,则没有错误。因此问题出在i=30
。但是,如果我手动插入mx[30,2]
和mx[30,1]
的值,则不会再出现错误。我不明白这个问题,无法解决。有人可以提出解决方案吗?
注意:dim(zoo)=240 7200
注意:A<-zoo[,c(mx[30,2]:mx[30,1]+length(zoo[,1]))]
会出现同样的错误。 mx [30,2] = 6961 mx [30,1] = 7200。然后A<-zoo[,c(6961:7200)]
无误地运行。