2014-01-14 52 views

回答

3

注意,這不是測試爲你的問題不是沒有額外的數據目前可重複性。這裏的關鍵是重新構建提供給該函數的值爲x。我們通過明確地創建要循環的值的向量(loop.vec),然後對循環中的每次迭代執行此操作,將該向量中的值分配給upperind(for循環中的第一行)。

f <- # NEED TO ASSIGN f HERE 
midindex <- # NEED TO ASSIGN midindex HERE 
lindex <- # NEED TO ASSIGN 
loop.vec <- c(peakind$freqindex, midindex+1)) 
subsignals <- vector("list", length(loop.vec)) # pre-allocate 
lowerind <- loop.vec[[1]] # I'M GUESSING HERE 

for(i in seq_along(loop.vec) { 
    upperind <- loop.vec[[i]] 
    fsub <- f 
    notnullind <- ((fsub$freqindex >= lowerind 
        & fsub$freqindex < upperind) 
       | 
        (fsub$freqindex > (lindex - upperind + 2) 
        & fsub$freqindex <= (lindex - lowerind + 2))) 


    fsub[!notnullind,"coef"] <- 0 
    lowerind <- upperind 
    subsignals[[i]] <- Re(fft(fsub$coef, inverse=TRUE)/length(fsub$coef)) 
} 

而且,由於我們不再執行函數中的代碼,我們不需要再做<<-全局分配作爲迭代之間的for循環依然存在的環境。