2014-01-14 2 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)) 
} 

Кроме того, так как мы больше не выполняет код внутри функции, нам не нужно делать <<- глобальное задание больше как среда для цикла сохраняется между итераций.

Смежные вопросы