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

  • 事情是这样的:师姐说她有一批水稻基因的LOC_Os号,然后就开启了今天的大坑之旅。首先我们查看all.lous文件的行数
谈一谈今天在导入文件时候遇到的一个巨坑_第1张图片
loc号.png
  • 然后想查找这些基因的注释信息。然后我就想到了tigr里面的all.locus_brief_info.7.0文件,格式是这样的
    谈一谈今天在导入文件时候遇到的一个巨坑_第2张图片
    all.locus.png
  • 然后这不就变成了一个取交集的问题了吗?由于其他语言我都学的稀烂,自然而然第一反应就想到了R里面的merge,left_join等函数。
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,原来很多人都遇到过这总问题

    谈一谈今天在导入文件时候遇到的一个巨坑_第3张图片
    bird.so.png

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

    谈一谈今天在导入文件时候遇到的一个巨坑_第4张图片
    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)
谈一谈今天在导入文件时候遇到的一个巨坑_第5张图片
result.png
  • 发现比我们要查的目标行数要多,查看了一下数据,发现在loc文件中一个LOC_Os号对应多个annotation,所以就不奇怪了。

你可能感兴趣的:(谈一谈今天在导入文件时候遇到的一个巨坑)