r - 如何通过提供查询名称列表而不是单个查询名称来使用rentrez 包检索数据?
问题描述
因此,我尝试使用该rentrez
软件包从 GenBank 中检索 DNA 序列数据,并提供物种列表作为输入。我所做的是为我要查询的物种创建一个向量,然后创建一个term
我指定要检索的序列数据类型的位置,然后创建一个search
检索与我的查询匹配的所有事件,最后我创建data
我在 fasta 文件中检索实际序列数据的位置。
library(rentrez)
species<-c("Ablennes hians","Centrophryne spinulosa","Doratonotus megalepis","Entomacrodus cadenati","Katsuwonus pelamis","Lutjanus fulgens","Pagellus erythrinus")
for (x in species){
term<-paste(x,"[Organism] AND (((COI[Gene] OR CO1[Gene] OR COXI[Gene] OR COX1[Gene]) AND (500[SLEN]:3000[SLEN])) OR complete genome[All Fields] OR mitochondrial genome[All Fields])",sep='',collapse = NULL)
search<-entrez_search(db="nuccore",term=term,retmax=99999)
data<-entrez_fetch(db="nuccore",id=search$ids,rettype="fasta")
}
基本上我要做的是将每个物种的查询结果连接成一个变量。我开始使用 for 循环,但我认为这种形式没有意义,因为正在查询的每个新物种的数据只是替换data
.
对于 的某些元素species
,将没有要检索的数据,并且 R 显示此错误:
Error: Vector of IDs to send to NCBI is empty, perhaps entrez_search or entrez_link found no hits?
在显示此错误并因此没有该特定物种的数据的情况下,我希望代码继续运行并忽略它。
我的输出将是一个变量data
,其中将包括检索的序列数据,来自species
.
解决方案
library(rentrez)
species<-c("Ablennes hians","Centrophryne spinulosa","Doratonotus megalepis","Entomacrodus cadenati","Katsuwonus pelamis","Lutjanus fulgens","Pagellus erythrinus")
data <- list()
for (x in species){
term<-paste(x,"[Organism] AND (((COI[Gene] OR CO1[Gene] OR COXI[Gene] OR COX1[Gene]) AND (500[SLEN]:3000[SLEN])) OR complete genome[All Fields] OR mitochondrial genome[All Fields])",sep='',collapse = NULL)
search<-entrez_search(db="nuccore",term=term,retmax=99999)
data[x] <- tryCatch({entrez_fetch(db="nuccore",id=search$ids,rettype="fasta")},
error = function(e){NA})
}
推荐阅读
- azure - 什么服务用于触发分配了机器学习任务的 Azure Pipeline?
- android - 在cpp文件android中使用未声明的变量
- reactjs - 在反应 laravel 电子商务项目中,有时 JS 和 CSS 文件有时不能正常工作
- c - 不发生被零除时如何调试 sigfpe
- mysql - 我可以在一个查询中获取具有 LIMIT n,m 的记录计数吗?
- android - 每个回收站视图项上的 ViewTreeObserver.OnGlobalLayoutListener 以被动地自动调整 TextView 的大小
- c - 为什么在调用 exit(0) 之后,子进程仍然存在?
- ssl - 引入 SSL 时 ActiveMQ 错误证书
- flutter - 颤振 + PhotoView 适合屏幕 - _RenderLayoutBuilder 对象在布局期间被赋予无限大小
- javascript - Mongoosejs .find 返回整个模型而不是文档