1
我怎樣才能改變這種lapply
到for
循環:改變lapply功能爲循環
我怎樣才能改變這種lapply
到for
循環:改變lapply功能爲循環
注意,這不是測試爲你的問題不是沒有額外的數據目前可重複性。這裏的關鍵是重新構建提供給該函數的值爲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循環依然存在的環境。