向列表(或向量)添加新值时遇到问题。这是我的代码:
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
作为resualt
ena<-sum(energie(normaltimeseries[2:5,1]))
我有72
等等,这与我在循环中计算的完全不同?可以有人解释我,为什么我看到了差异,我该如何解决?
答案 0 :(得分:3)
仔细阅读?append
。 “修改”的向量是第一个参数,要追加的值是第二个参数。所以你打算做append(m1, end)
,而不是相反。
我在“修改”周围加上引号,因为该函数没有副作用,即它不会真正修改m1
但返回一个全新的向量。因此,您需要分配它,以免丢失:
m1 <- append(m1, ena)
当然,不要忘记在循环之前初始化脚本顶部的m1
:
m1 <- c()
最后,要注意迭代地增长对象可能是内存耗时。如果你没有太多的迭代,它应该可以正常工作。