我试图使用library(rentrez)
term <- c('AKR1C1[GENE] AND snp_pubmed[Filter] AND Homo sapiens[Organism]',
'AKR1C2[GENE] AND snp_pubmed[Filter] AND Homo sapiens[Organism]')
p.snps <- for (i in seq_along(term)) {
entrez_search(db="SNP",
term = i,
usehistory = "y"
)
}
包找到包含PubMed条目的SNP列表。当我运行下面的代码时,我最终得到一个NULL数据帧。我想我没有正确地写数据框。
trigger={
<div>
<div className="col-sm-3">
Text
</div>
<div className="col-sm-3">
Text
</div>
<div className="col-sm-3">
Text
</div>
</div>
}
我想为大约100个基因做这个。
答案 0 :(得分:2)
<强>问题强>
有几个问题:
for
循环不返回值entrez_search
的第二个参数应该是表示该术语的字符串,但问题中的代码会将数字传递给数字"esearch"
个对象的列表(尽管后来可以进一步转换)。更正后的代码
试试这个:
p.snps <- vector(length = length(term), mode = "list")
for (i in seq_along(term)) {
p.snps[[i]] <- entrez_search(db = "SNP", term = term[i], history = "y")
}
names(p.snps) <- term
更短的替代 或全部在一行:
p.snps <- sapply(term, entrez_search, db = "SNP", usehistory = "y", simplify = FALSE)
长表格数据框
要将此列表转换为ids
的长格式数据框,并使用第二列提供查询:
ids <- lapply(p.snps, "[[", "ids")
stack(ids)
,并提供:
values ind
1 41314625 AKR1C1[GENE] AND snp_pubmed[Filter] AND Homo sapiens[Organism]
2 17344137 AKR1C1[GENE] AND snp_pubmed[Filter] AND Homo sapiens[Organism]
3 11548049 AKR1C1[GENE] AND snp_pubmed[Filter] AND Homo sapiens[Organism]
4 7097713 AKR1C1[GENE] AND snp_pubmed[Filter] AND Homo sapiens[Organism]
...etc...
如果您希望索引值(1,2,...)而不是查询字符串,请在stack
语句之前运行此语句:
names(ids) <- seq_along(ids)
在这种情况下,堆栈语句的输出将为:
values ind
1 41314625 1
2 17344137 1
3 11548049 1
4 7097713 1
5 3930965 1
6 3763675 1
...etc...