increase speed for 'for loop' I have files containing data set which contain 11,000 rows. I have to run a loop through each row, this is taking me 25minutes for each file.
I am using following code:

z &lt;- read.zoo("Title.txt", tz = "")
for(i in seq_along(z[,1])) {
  if(is.na(coredata(z[i,1]))) next
  ctr &lt;- i
  while(ctr &lt; length(z[,1])) {
    if(abs(coredata(z[i,1])-coredata(z[ctr+1,1])) &gt; std_d) {
      z[ctr+1,1] &lt;- NA
      ctr &lt;- ctr + 1
    } else {
      break
    }
  }
}


Where "Title.txt" is file containing 11,000 rows. It looks like (first five rows):

"timestamp" "mesured_distance" "IFC_Code" "from_sensor_to_river_bottom"
 "1" "2012-06-03 12:30:07-05" 3188 1005 3500
 "2" "2012-06-03 12:15:16-05" 3189 1005 3500
 "3" "2012-06-03 12:00:08-05" 3185 1005 3500
 "4" "2012-06-03 11:45:11-05" 3191 1005 3500
 "5" "2012-06-03 11:30:15-05" 3188 1005 3500


I wish to receive help on how should I increase the speed for this code?

Here is how the code works:

    set.seed(100)
    x=rnorm(15)
    std_d=sd(x)


afer running code. It gives this:

    m
  [1] -0.50219235          NA -0.07891709          NA  0.11697127  0.31863009            NA
  [8]  0.71453271          NA          NA          NA          NA          NA  0.73984050
 [15]          NA


It replaces the next element(e2) with NA if the subtraction(e1-e2)  is > std_d and then checks e1 with e3 if (e1-e3) is > std_d then it replaces e3, if it was &lt; std_d then it 
would check e3-e4 and so on.
Revised: ...I wonder if this could replace those two loops? Here are the results with the test vector offered in your comments:

set.seed(100);  m=rnorm(15); std_d &lt;- sd(m)
Reduce(function(y,xx){ if( abs(tail(y[!is.na(y)], 1) - xx) &gt; std_d ) {c(y,NA)}else{ 
                                                                        c(y,xx)} }, 
          m )
 [1] -0.50219235          NA -0.07891709          NA  0.11697127  0.31863009          NA  0.71453271
 [9]          NA          NA          NA          NA          NA  0.73984050          NA


Here's original test case with revised results. It is now comparing the last non-NA value to the current one and making NA if it exceeds the standard value. That other solution looked at the running sd() but your code did not do that so I just used a global sd value:

&gt; z &lt;- read.zoo(text=' "timestamp" "mesured_distance" "IFC_Code" "from_sensor_to_river_bottom"
 "1" "2012-06-03 12:30:07-05" 3188 1005 3500
 "2" "2012-06-03 12:15:16-05" 3189 1005 3500
 "3" "2012-06-03 12:00:08-05" 3185 1005 3500
 "4" "2012-06-03 11:45:11-05" 3191 1005 3500
 "5" "2012-06-03 11:30:15-05" 3188 1005 3500', tz = "")
 std_d &lt;- sd(coredata(z[,1]) )
 zx &lt;- as.numeric(coredata(z[,1]))
 coredata(z[,1]) &lt;- Reduce(function(y,xx){ 
                              if( abs(tail(y[!is.na(y)], 1) - xx) &gt; std_d ) {
                                        c(y,NA)} else { 
                                        c(y,xx)} }, 
                                  zx )
 z
                    mesured_distance IFC_Code from_sensor_to_river_bottom
2012-06-03 11:30:15             3188     1005                        3500
2012-06-03 11:45:11               NA     1005                        3500
2012-06-03 12:00:08               NA     1005                        3500
2012-06-03 12:15:16             3189     1005                        3500
2012-06-03 12:30:07             3188     1005                        3500