問題
いくつかの問題があります。
for
ループは値を返しません
entrez_search
の二番目の引数は、中の用語が、コードを表す文字列でなければなりません質問はそれに数値を渡します
- 質問はデータフレームを参照していますが、これを返す自然な方法はのリストです10個のオブジェクト(これは後でさらに変形することができるが)。
修正されたコード
これを試してみてください:
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
短い代替 またはすべてを1行で:
p.snps <- sapply(term, entrez_search, db = "SNP", usehistory = "y", simplify = FALSE)
ロングフォームデータのFRAMを(
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...
あなたではなく、インデックス値を持っている希望の場合:
ids <- lapply(p.snps, "[[", "ids")
stack(ids)
を与える:電子
は、クエリを与えて二列にids
の長い形式のデータフレームにこのリストを変換するには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