美文网首页数据-R语言-图表-决策-Linux-Python
谈一谈今天在导入文件时候遇到的一个巨坑

谈一谈今天在导入文件时候遇到的一个巨坑

作者: 热衷组培的二货潜 | 来源:发表于2018-03-10 13:19 被阅读60次

事情是这样的:师姐说她有一批水稻基因的LOC_Os号,


loc号.png
然后想查找这些基因的注释信息。然后我就想到了tigr里面的all.locus_brief_info.7.0文件,格式是这样的 all.locus.png
然后这不就变成了一个取交集的问题了吗?由于其他语言我都学的稀烂,自然而然第一反应就想到了R里面的merge,left_join等函数。

然后就开启了今天的大坑之旅。首先我们查看all.lous文件的行数

wc -l all.locus_brief_info.7.0
66339 all.locus_brief_info.7.0  ##可以看到为66339行

然后我使用常规的R读取文件的方法

locs <- read.table(file.choose(),sep = "\t",header = T,stringsAsFactors = FALSE)

结果有警告


警告.png

再查看一下行数,wc,只有38111行,少了一大截啊


行数.png

然后我就把警告的内容复制到bird.so,原来很多人都遇到过这总问题

bird.so.png

点开了其中一个问题贴,果然就得到了自己想要的答案。

bird,so_1.png

回过头一想,这不是警告里面最后那一句话的信息吗,果然还是太年轻了。

Warning message:
In scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  ***EOF within quoted string***

将代码改了一下

locs <- read.table(file.choose(),sep = "\t",header = T,stringsAsFactors = FALSE,quote = "")

再查看一下行数,Perfect! 完美解决,


行数——1.png

然后剩下来找个信息就不是问题了

wt <- read.table(file.choose(),header = F,sep = "\t")
head(wt)
colnames(wt) <- "locus"
locs <- read.table(file.choose(),sep = "\t",header = T,stringsAsFactors = FALSE,quote = "")
head(locs)
merge(wt,locs,by.x = "locus") -> data
write.csv(data,"66_annotation.csv",row.names = F)
result.png

发现比我们要查的目标行数要多,查看了一下数据,发现在loc文件中一个LOC_Os号对应多个annotation,所以就不奇怪了。

相关文章

网友评论

    本文标题:谈一谈今天在导入文件时候遇到的一个巨坑

    本文链接:https://www.haomeiwen.com/subject/wcnvfftx.html