我正在尝试使用rentrez包查找具有PubMed条目的SNP列表。当我运行下面的代码时,我得到了一个空的数据帧。我想我没有正确地写入数据帧。
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"
)
}我想为大约100个基因做这件事。
发布于 2017-04-13 09:28:02
Problems
有几个问题:
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) <- termShorter 或all in one line:
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)在这种情况下,stack语句的输出将是:
values ind
1 41314625 1
2 17344137 1
3 11548049 1
4 7097713 1
5 3930965 1
6 3763675 1
...etc...https://stackoverflow.com/questions/43381357
复制相似问题