-1

在使用 read.alignment(库 seqinr)读取对齐后,我有一个类对齐对象(secuen)。它有四个组件,我感兴趣的是“nam”,它存储了 secuences 的名称。我还有一个带有两个变量的 data.frame (samples),一个带有 secuences 的名称(它具有比第一个对象更多的序列名称)和每个序列所属的样本名称。每当两个对象之间的序列名称数学时,我想用样本名称替换序列名称。我尝试过使用 grep 和一些 for 循环,但我无法得到它。例子

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

sequen$nam(length 3091) 是一个向量 ( is.vectorreturns TRUE) 和一个字符 ( is.characterreturns TRUE),但sample$V1(length 61632) 既不是向量也不是字符

我该如何进行?我正在使用 R

4

1 回答 1

0

最后我得到了解决方案,

使用 macth 查找两个文件中序列名称重合的列

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

然后从一个文件中删除不重合的列并仅保留新名称

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 回答