0

向列表(或向量)添加新值时遇到问题。这是我的代码:

window<-4
n<-1

normaltimeseries<-c(1,2,3,1,2,3,3,2,1,1,2,3,3,1,2,1)

energie <- function(x) {(Re(fft(x)))^2+(Im(fft(x)))^2}


normaltimeseries<-matrix(normaltimeseries)


while(n+window <= length(normaltimeseries[,1]))
{
  ena<-sum(energie(normaltimeseries[n:(n+window-1),1]))
  append(ena,m1)
  n<-n+1
}
m1

我有这个结果:

92  92  92  60  40  60  92 104  92  92  72  60

如果我在没有这样的循环的情况下计算它:

ena<-sum(energie(normaltimeseries[1:4,1]))

结果我60

ena<-sum(energie(normaltimeseries[2:5,1]))

我有72 等等,这与我在循环中计算的完全不同?有人可以解释一下,为什么我看到了差异,我该如何解决?

4

1 回答 1

3

?append仔细阅读。“修改”的向量是第一个参数,要附加的值是第二个参数。所以你打算这样做append(m1, end),而不是相反。

我在“修改”周围加上引号,因为该函数没有副作用,即它并没有真正修改m1而是返回一个全新的向量。所以你会想要分配它,这样它就不会丢失:

m1 <- append(m1, ena)

当然,不要忘记m1在循环之前在脚本顶部进行初始化:

m1 <- c()

最后,请注意,迭代地增长对象可能会耗费内存和时间。如果您没有太多迭代,它应该可以正常工作。

于 2013-11-09T13:17:03.570 回答