美文网首页数据-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