2014-01-13 183 views
0

我想了解R的功能你能不能請聲明它的某些部分對我來說是功能:需要幫助瞭解r中

的功能是:

subsignals <- lapply(c(peakind$freqindex, midindex+1), function(x){ 
upperind <- x 
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 
Re(fft(fsub$coef, inverse=TRUE)/length(fsub$coef)) 
}) 

莫非有人給我解釋一下:

1,什麼可能是notnullind,一般內容有哪些呢這部分代碼做:

notnullind <- ((fsub$freqindex >= lowerind 
       & fsub$freqindex < upperind) 
       | 
       (fsub$freqindex > (lindex - upperind + 2) 
       & fsub$freqindex <= (lindex - lowerind + 2))) 

2-fsub[!notnullind,"coef"] <- 0是什麼意思?

3-<<-lowerind <<- upperind是什麼意思?

進一步信息: peakind看起來像這樣:

   coef freqindex 
9 2.714391+3.327237i   9 
17 1.273340+4.023808i  17 
25 -0.445424+5.674848i  25 
33 -1.378107+3.182281i  33 
41 -2.798383+2.340895i  41 
49 -4.479888+1.095193i  49 

fsub

     coef freqindex 
1 19.2352397+0.0000000i   1 
2 -0.4799684+0.1651822i   2 
3 1.5235726+0.0790459i   3 
4 -0.1165587+0.1217513i   4 
5 2.2376900+1.6763410i   5 
6 1.1256711+0.4624819i   6 
..... 
102 -0.1165587-0.1217513i  102 
103 1.5235726-0.0790459i  103 
104 -0.4799684-0.1651822i  104 
+1

'<< - '通常用於全局變量賦值。您可以查看「?」<< - 「以獲取更多信息。 ' – user1981275

回答

2

看來,代碼通過fsub在由peakind相鄰條目之間的差限定的塊的迭代。據推測peakind包含fsub有趣的點。你可以看到這個,因爲大多數fsub比較是在x(來自peakind)和lowerind之間,它被設置爲先前的循環值x/upperind的值。

  1. notnullind將是一個合乎邏輯的矢量(TRUE,FALSE)這是真的在fsub是這個迭代iterations peakind$freqindex和之前的那些,以及基於lindex別的東西,我不能告訴你的行b/c該變量在您的代碼中未定義。
  2. 即線被設置在所有fsub$coef不符合上述條件,以零
  3. lowerind<<-upperind的值是該函數的外部的全局分配正在通過lapply運行。這允許由lapply循環運行的函數跟蹤之前調用該函數的最後一個upperind。該分配必須是全局的,否則在lapply的每次迭代之後該值都將丟失。

基本上,該函數在fsub做用於數據的fftpeakind定義的索引值的相鄰對之間。

請注意,3.建議您的功能沒有以最好的方式進行組織。除非你真的做不到,你通常應該避免全球任務。在這種情況下,我將循環遍歷cbind(head(peakind$freqindex, -1L), tail(peakind$freqindex, -1L))的行,其中包含您關心每個迭代的索引範圍。