在从RNAseq实验中读取注释文件时,我遇到了一个奇怪的问题。
我试图在标签分隔文件(http://we.tl/qCjv4N3LF2)中读取,然后在模式" bahd"中搜索注释(在第四列中),以查找&#等条目34; bahd酰基转移酶dcr"然后显示属于这些条目的所有ID(第一列)。代码是:
ShootAnnot<-read.table("annotation1.txt",sep="\t")
matches<-grep("bahd",ShootAnnot[,4],ignore.case=TRUE)
ShootAnnot[matches,1]
奇怪的是,我注意到这并没有找到我知道的所有基因注释 - 在文件中只有12个匹配。当我在表格中扫描缺失的条目时,我发现文件中有一行似乎R无法解释分离模式&#34; \ t&#34;和&#34; \ n&#34;一点点。
查看数据集中的第4825行:
ShootAnnot[4825,]
由于某种原因,该行中的第六个单元格包含大量数据,包含许多完整的行和适当的&#34; \ t&#34;和&#34; \ n&#34;细胞和线分离模式都在一个细胞中。然后它突然跳回到正确分离细胞和细胞系。 我有一堆这些文件,所以我想确保我可以自动解决这些问题。可能导致这种情况的任何想法?
谢谢!
答案 0 :(得分:1)
我不确定为什么会出现乱码(可能是DOS CR / LF的事情),但文件非常大,如果你将它插入data.table
,你将获得相当不错的加速阅读数据。
library(data.table)
ShootAnnot <- fread("~/Downloads/annotation1.txt")
ShootAnnot[like(Blast2GO_GO_Description,"bahd"), "#ID", with=FALSE]
会给你
#ID
1: c112902_g1_i1_m.105401
2: c11459_g1_i1_m.4290
3: c11459_g2_i1_m.4292
4: c186946_g1_i1_m.110882
5: c24956_g1_i1_m.8768
6: c265515_g1_i1_m.117383
7: c28096_g1_i1_m.10253
8: c37936_g1_i1_m.14867
9: c40683_g1_i1_m.17292
10: c54651_g1_i1_m.34709
11: c54651_g2_i1_m.34711
12: c921_g1_i1_m.351
(你的文件中没有任何非小写&#34; bahd&#34;