【发布时间】:2021-06-25 23:46:30
【问题描述】:
我在数据帧“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")
ouput image in 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)
}
如何将函数的每个输出添加到输出列表“查询”中?
【问题讨论】:
-
您能否提供您的数据或示例,以便重现性更好?我看到你有一个长度为 1 的列表 - 因此可以在数据帧的一行中拥有一个包含每一行结果的数据帧吗?
-
query <- list(); for (k in seq_along(q$Kegg) ) { query[k] <- keggGet (q$Kegg[k] ) } -
@CareyCaginalp 示例数据已添加。在我得到所有输出后,我真的想将完整列表转换为适当的数据帧,其中每一行都是一个条目的输出,并且分布在列中,因此很容易阅读,但这将是另一个不同的问题
-
@IRTFM 它工作!谢谢!!!!