为什么循环将 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
我有一个基本的 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