为什么循环将 NA 值添加到数据框?

Why is loop adding NA values to the data frame?

我有一个基本的 while 和 for 循环,我遍历数据框中的一些起始值和结束值,然后遍历一个列表并获取(子字符串)一些值。

下面代码的问题是它添加了很多 NA 行,我不明白为什么以及如何。

我有一个查看 GREPL 的 if - 找到“TRACK 2 DATA:”,如果是,则在数据框中添加一行。我没有 else 可以增加 NA 值。所以根据我的理解,如果 Block 为假,迭代应该继续而不是向数据帧添加值?

可能出了什么问题?

i=1
fundi <- nrow(find_txn)  #get the last record
while(i <=fundi) {                  # Start while-loop until END OF records
  nga <- find_txn[i,1]  #FRom record
  ne <- find_txn[i,3]  #to Records 
  
  for (j in nga:ne){ #For J in from:to 
    
    if(grepl("TRACK 2 DATA: ",linn[j])) { #If track data found  do something 
      
      gather_txn[j,1] <- j # add a record for iteration number 
      gather_txn[j,2] <- substr(linn[j],1,9) #get some substrings 
      gather_txn[j,3] <- substr(linn[j],34,39) #get some substrings 
      
    }  
  }
  i <- i + 1
 }

我循环访问了错误的变量。内部 if 循环需要使用 i 而不是 j 变量添加到 table:

gather_txn[i,1] <- j # add a record for iteration number 
gather_txn[i,2] <- substr(linn[j],1,9) #get some substrings 
gather_txn[i,3] <- substr(linn[j],34,39) #get some substrings