首页 > 解决方案 > 在 R 中:当我在 for 循环中时,如何将函数的列表输出存储在同一个列表中?

问题描述

我在数据框“q$Kegg”中有一个列,其中每一行都是函数“keggGet()”的一个条目,这个函数每次运行时最多有 10 个条目,然后我决定使用循环。我的数据框“q”看起来像:

col1 col2     Kegg       col4 col5
data  .   ath:AT3G05640   .   data
data  .   ath:AT1G53520   .   data
data  .   ath:AT3G10870   .   data
data  .   ath:AT5G02770   .   data

这个函数的输出是一个列表。示例

query<-keggGet("ath:AT3G05640") Rstudio中的输出图像

原始输出示例

> keggGet("ath:AT3G05640")

[[1]]
[[1]]$ENTRY
        CDS 
"AT3G05640" 

[[1]]$DEFINITION
[1] "(RefSeq) Protein phosphatase 2C family protein"

[[1]]$ORGANISM
                                 ath 
"Arabidopsis thaliana (thale cress)" 

[[1]]$POSITION
[1] "3"

[[1]]$MOTIF
[1] "Pfam: PP2C SpoIIE PP2C_2"

[[1]]$DBLINKS
[1] "NCBI-GeneID: 819731"          "NCBI-ProteinID: NP_001326841" "MIPS: AT3G05640.1"           
[4] "TAIR: AT3G05640"              "UniProt: Q9M9W9"             

[[1]]$AASEQ
  A AAStringSet instance of length 1
    width seq
[1]   358 MGHFSSMFNGIARSFSIKKAKNINSSKSYAKEATDEMAREAK...AAKRLVQQAVRAWNRKRRGIAMDDISAVCLFFHSSSSSPSL

[[1]]$NTSEQ
  A DNAStringSet instance of length 1
    width seq
[1]  1077 ATGGGACATTTCTCTTCCATGTTCAACGGTATAGCTAGATCC...GCCTCTTCTTCCATTCTTCATCGTCGTCGCCATCTCTATAG

如果我必须逐步执行此操作,它将如下所示:

query<-keggGet(c("ath:AT3G05640","ath:AT1G53520",.....)) 
#up to 10 entries each run for my 8000 entries and naming query2, query3,...
#because i don't know how to add the new results to "query" without overwriting.

然后我想创建一个循环,其中每个结果都存储在查询中,就好像我为我的所有条目运行函数一样(不能这样做,因为有 10 个限制)。直到现在我有:

for (k in q$Kegg) 
{
  query<-keggGet(k)
}

我如何将功能的每个输出添加到输出列表“查询”?

标签: rfor-loopindexing

解决方案


您可以使用lapply

query <- lapply(q$Kegg, keggGet)

推荐阅读