当前位置:  开发笔记 > 编程语言 > 正文

使用read.table()的麻烦,新行会创建不需要的空白字段

如何解决《使用read.table()的麻烦,新行会创建不需要的空白字段》经验,为你挑选了1个好方法。

我刚刚开始使用R并尝试掌握一些内置函数.我正在尝试组织一个基本的FASTA文本文件,如下所示:

>ID1
AGAATAGCCAGAACCGTTTCTCTGAGGCTTCC
>ID2
TCCAATTAAGTCCCTATCCAGGCGCTCCG
>ID3
GAACCGGAGAACGCTTCAGACCAGCCCGGAC

进入一个看起来像这样的表:

ID   Sequence
ID1  AGAATAGCCAGAACCGTTTCTCTGAGGCTTCC
ID2  TCCAATTAAGTCCCTATCCAGGCGCTCCG
ID3  GAACCGGAGAACGCTTCAGACCAGCCCGGAC

或者至少以类似方式组织的事情.不幸的是,每当我尝试使用时read.table,我都被迫设置fill = TRUE,以避免以下错误:

> read.table("ReadingText.txt", header=F, fill=F, sep=">")
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  : 
  line 2 did not have 2 elements

设置fill = TRUE无法解决问题,因为它只是引入了不需要的空白字段.我觉得我的问题是R想要将输入中的每个新行视为输出中的新行,而我希望它只在每个">"处开始一个新行并移动到下一列的输入的每个新行都有相同的行.

那么,你怎么能让这个工作?read.table只是错误的功能,试图这样做或是否有其他东西?另外,我真的很想在不使用任何软件包的情况下实现这一目标!我想要很好地掌握R中的内置函数.

感谢您花时间阅读本文并向我道歉,如果我在这里发布了错误的话.这是我第一次问什么.



1> Rich Scriven..:

使用read.table()或执行此操作需要一些棘手的后处理readLines().有一个函数read.fasta()seqinr包,可以让你大部分的方式存在.然后我们将结果列表转换为数据框.

library(seqinr)
(fasta <- read.fasta("so.fasta", set.attributes = FALSE, as.string = TRUE, forceDNAtolower = FALSE))
# $ID1
# [1] "AGAATAGCCAGAACCGTTTCTCTGAGGCTTCC"
#
# $ID2
# [1] "TCCAATTAAGTCCCTATCCAGGCGCTCCG"
#
# $ID3
# [1] "GAACCGGAGAACGCTTCAGACCAGCCCGGAC"

setNames(rev(stack(fasta)), c("ID", "Sequence"))
#    ID                         Sequence
# 1 ID1 AGAATAGCCAGAACCGTTTCTCTGAGGCTTCC
# 2 ID2    TCCAATTAAGTCCCTATCCAGGCGCTCCG
# 3 ID3  GAACCGGAGAACGCTTCAGACCAGCCCGGAC

该文件so.fasta

writeLines(">ID1
AGAATAGCCAGAACCGTTTCTCTGAGGCTTCC
>ID2
TCCAATTAAGTCCCTATCCAGGCGCTCCG
>ID3
GAACCGGAGAACGCTTCAGACCAGCCCGGAC", "so.fasta")

注意: Pascal在评论中提出了一个很好的观点.当您的特定任务已存在工具时,请利用该工具并使用它.当有人已经麻烦地创建这个工具并在一个包中共享它以试图帮助其他用户试图解决这个问题时,实际上没有必要花时间尝试使用那些不适合这项工作的功能.同样的问题.

更新: 实际上,使用起来并不困难readLines(),只要你有一个漂亮的干净文件.这是一个仅使用基本函数的可能解决方案.

x <- readLines("so.fasta")
ids <- grepl("^>", x)
data.frame(ID = sub(">", "", x[ids]), Sequence = x[!ids])
#    ID                         Sequence
# 1 ID1 AGAATAGCCAGAACCGTTTCTCTGAGGCTTCC
# 2 ID2    TCCAATTAAGTCCCTATCCAGGCGCTCCG
# 3 ID3  GAACCGGAGAACGCTTCAGACCAGCCCGGAC

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有