从for-loop-rentrez在数据帧中存储数据

从for-loop-rentrez在数据帧中存储数据,r,loops,rentrez,R,Loops,Rentrez,我正在尝试使用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

我正在尝试使用
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"
                )
}
库(rentrez)

术语问题

有几个问题:

  • 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
给予:

     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,…)而不是查询字符串,请在
堆栈
语句之前运行此语句:

names(ids) <- seq_along(ids)

问题

有几个问题:

  • 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
给予:

     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,…)而不是查询字符串,请在
堆栈
语句之前运行此语句:

names(ids) <- seq_along(ids)

for
循环不存储结果。您可能会考虑< <代码> .pSN.<代码> 循环不存储结果。你可能会考虑<代码> P.SNP这正是我所要寻找的。我在想一个
sapply
lappy
方法可能是最好的。谢谢这正是我想要的。我在想一个
sapply
lappy
方法可能是最好的。谢谢