我有一个大型的FASTA文件,我需要为一个类进行分析。
我在How to search and isolate attributes of FASTA formatted text in R问题中找到了帮助。但是,我仍然无法操纵数据
使用函数getAnnots()
,我得到了一个" annots"采用以下格式:
>annots
[[i]]
[1] ">SourceAccessionCode | StrainName | type / subtupe | OtherInfo | "
我想将此列表格式更改为数据框,其中列表中的每个元素(每个元素在一个单独的行上)被拆分为四列(每个列包含上述示例中的信息)。
我尝试了strsplit()
函数与sapply()
和for
循环的不同组合,但无济于事。
即使使用它自己的strsplit()
也会得到令人不满意的结果
strsplit(GISAnnots [[i]],split =" |") [[一世]] [1]"> sourceAccessionCode" " |" " StrainName" " |"
[5]"类型" " /" "子类型" " |"
[9]" MoreInfo" " |"
使用for
循环会得到以下结果
> info <- for (i in 1:length(GISAnnots))
+ strsplit(GISAnnots[[i]], split = " | ")
> info
NULL
我道歉我没有具体的例子,因为我无法想出一个展示作品的例子,由于版权限制,我不能用我自己的数据作为例子。
感谢您的帮助
答案 0 :(得分:1)
这里有一些数据
elt = ">SourceAccessionCode | StrainName | type / subtupe | OtherInfo | "
lst = list(elt, elt))
可能第一个问题是这是一个列表,但您希望它不被列出。对于不太大的数据,一个巧妙的技巧是假装文本输入到read.delim()
或类似的
> read.delim(text=unlist(lst), sep="|", header=FALSE, strip.white=TRUE)
V1 V2 V3 V4 V5
1 >SourceAccessionCode StrainName type / subtupe OtherInfo NA
2 >SourceAccessionCode StrainName type / subtupe OtherInfo NA
可能会添加stringsAsFactors=FALSE
。 Biostrings包还有readDNAStringSet()
用于处理fasta文件,其中fasta序列的名称将使用names(readDNAStringSet('your.fasta'))