-1

read.alignment (ライブラリ seqinr) でアラインメントを読み取った後、クラス アラインメント (secuen) のオブジェクトがあります。これには 4 つのコンポーネントがあります。私が興味を持っているのは、シーケンスの名前を格納する「nam」です。また、2 つの変数を持つ data.frame (サンプル) もあります。1 つはシーケンスの名前 (最初のオブジェクトよりも多くのシーケンスの名前があります) と、各シーケンスのサンプルの名前が属します。2 つのオブジェクト間でシーケンスの名前が一致する場合は常に、シーケンスの名前をサンプルの名前に置き換えたいと思います。grep といくつかの for ループを試しましたが、取得できませんでした。例

> sequen$nam #(length 3091)
"HZSC42M02F3H7C" "HZSC42M02F2MMT" "HZSC42M02F03D5"
> samples
 V1              V2   
HZSC42M02F3H7C sample_1
HZSC42M02F2MMT sample_2
HZSC42M02F03D5 sample_3

sequen$nam(長さ 3091) はベクトル (is.vector戻り値TRUE) および文字 (is.character戻り値TRUE) ですが、sample$V1(長さ 61632) はベクトルでも文字でもありません

どうすれば続行できますか?私はRで働いています

4

1 に答える 1

0

最後に、私は解決策を得ました、

macth を使用して、2 つのファイルでシーケンス名が一致する列を見つけます

test<-match(sequen$nam,samples$V1)

次に、一致しない列を1つのファイルから削除し、新しい名前のみを保存します

pre<-sample[test,] 
pre1<-pre[,2]

最後に、新しいシーケンス名 (pre1) とシーケンス リストからのシーケンスを使用して、新しい fasta ファイルを書き込みます。

write.fasta(sequences = sec$seq, names = pre1, nbchar = 478, file.out = "final_test.fasta")
于 2013-10-15T11:45:49.550 に答える