問題
有幾個問題:
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)
龍形式數據FRAM Ë
這個名單可以轉換成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...
'for'循環不會存儲結果。你可以考慮'p.snps < - lapply(seq_along(term),function(i)entrez_search(...))'。 – r2evans