替换列表组件中的元素

时间:2013-10-14 14:33:46

标签: r

在读取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

合作

1 个答案:

答案 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")