如何使用R

时间:2019-07-30 19:23:37

标签: r file-handling

我正在尝试将DNA序列从网页下载到fastA文件中。我正在下载html网页,但无法仅获取fasta信息,而无法获取html信息 对于那些非生物信息学家来说,fasta文件看起来像这样

> DNA序列名称

ACTGCGATGCGATGCAGCTAGCTGACG

(其中ACTG部分是DNA序列)

我想不通如何拔出想要的行,因此我尝试了一种解决方法,方法是使用read.fasta()将网页数据作为fasta文件读取,除了最后一行之外,该文件都有效,无论我做什么,它总是打印出非DNA句子。我已经尝试了一些正则表达式替换和grep来获取我想要的内容或删除我不想要的内容,但到目前为止都没有奏效,所以我不知道自己在做什么错。

download.file("http://www.ng-mast.net/sql/fasta.asp?allele=POR",
              "webpage.txt", "auto", quiet=FALSE, mode = "w", 
               cacheOK = TRUE, headers = NULL)
lines <- readLines(con = "webpage.txt", encoding = "UTF-8")
fastadpor <- str_replace_all(lines, "[:print:]*&gt;POR", 
    ">POR_")
writeLines(fastadpor2, con = "portemp.fasta")
newfasta <- read.fasta(file = "portemp.fasta", as.string = 
    TRUE, forceDNAtolower = FALSE)
write.fasta(sequences = newfasta, names = names(newfasta), 
    file.out = "por.fasta")

输出文件的末尾包含“全局序列和ST数据库
”,我不知道如何清除它。

1 个答案:

答案 0 :(得分:1)

如果只抓取网页的所需部分而不抓取整个部分,这是最简单的。这可以通过rvest之类的包来完成,该包可以让您选择某些HTML元素。

library(rvest)

allele <- 
  read_html("http://www.ng-mast.net/sql/fasta.asp?allele=POR") %>% 
  html_node("textarea") %>% 
  html_text()


writeLines(allele, "fasta.txt")
相关问题