【问题标题】:different result while using loop使用循环时结果不同
【发布时间】:2013-11-09 21:17:03
【问题描述】:

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

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 等等,这与我在循环中计算的完全不同?有人可以解释一下,为什么我会看到差异以及如何解决这个问题?

【问题讨论】:

    标签: r


    【解决方案1】:

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

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

    m1 <- append(m1, ena)
    

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

    m1 <- c()
    

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

    【讨论】:

      猜你喜欢
      • 2022-06-11
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-26
      相关资源
      最近更新 更多