作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚开始使用 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()
执行此操作需要一些棘手的后期处理。或 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
writeLines(">ID1
AGAATAGCCAGAACCGTTTCTCTGAGGCTTCC
>ID2
TCCAATTAAGTCCCTATCCAGGCGCTCCG
>ID3
GAACCGGAGAACGCTTCAGACCAGCCCGGAC", "so.fasta")
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
关于r - read.table() 的问题,新行会创建不需要的空白字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34604668/
我是一名优秀的程序员,十分优秀!