Last-first mappingとBW行列から元の文字列を復元すること

#元の文字列
> T
[1] "g" "c" "a" "c" "c" "c"
# BW行列
> sortedM
     [,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] "$"  "g"  "c"  "a"  "c"  "c"  "c" 
[2,] "a"  "c"  "c"  "c"  "$"  "g"  "c" 
[3,] "c"  "$"  "g"  "c"  "a"  "c"  "c" 
[4,] "c"  "a"  "c"  "c"  "c"  "$"  "g" 
[5,] "c"  "c"  "$"  "g"  "c"  "a"  "c" 
[6,] "c"  "c"  "c"  "$"  "g"  "c"  "a" 
[7,] "g"  "c"  "a"  "c"  "c"  "c"  "$" 
# BW行列の最左列と最右列
> L
[1] "$" "a" "c" "c" "c" "c" "g"
> R
[1] "c" "c" "c" "g" "c" "a" "$"
  • 元の配列の末尾は、必ず、BW行列の最右列の第1行の文字
  • これをスタートに、以下のプロセスで復元する
    • 最右列のある文字を、元の文字列に当てはめた。この文字は、最右列の中にある同じ文字の中で、上から何番目にあるかを確認する
    • 確認したら、i番目とする。最左の列にある、その文字のうち、上からi番目の文字の行に着目し、その行の最右列の文字を確認し、それを、復元中の文字列の末尾から一つ前に据える
    • 以下、繰り返し
# 初期処理
locR<-1
locL<-0
reT<-c()

# 繰り返し処理
for(i in 1:n){
	reT<-c(R[locR],reT)
	current<-reT[1]
	print(reT)
	# currentと同じ文字を持つRの行番号
	tmpR<-which(R==current)
	print(tmpR)
	tmporder<-which(tmpR==locR)
	print(tmporder)
	tmpL<-which(L==current)
	locR<-tmpL[tmporder]
	#reT<-c(R[locR],reT)
	#current<-reT[1]
	#print(reT)
}

# 復元の確認
reT
T
> reT
[1] "g" "c" "a" "c" "c" "c"
> T
[1] "g" "c" "a" "c" "c" "c"