2014-01-13 145 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))的行,其中包含您关心每个迭代的索引范围。