在读取read.alignment(库seqinr)的对齐后,我有一个类对齐(secuen)的对象。它有四个组成部分,我感兴趣的是“nam”,它存储了secuences的名字。我还有一个带有两个变量的data.frame(samples),一个带有secuences的名称(它有比第一个对象更多的序列名称),每个序列的样本名称都属于。每当两个对象之间的序列mathc的名称时,我想用样本的名称替换序列的名称。我试过用grep,有些用于循环,但我无法得到它。 实施例
> 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
),但是{{1} }(长度61632)不是矢量也不是字符
我该怎么办?我正在与R
合作答案 0 :(得分: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")