将每个for循环的结果保存为新数据框

时间:2017-04-21 13:29:19

标签: r for-loop bioinformatics

这是我的第一篇文章,所以对于任何不确定性都要事先道歉。

我试图用他们的函数getProfileData()从cBioPortal中提取RNAseq数据。我想在列表的每个元素上调用此函数,其中包含从此列表元素生成的参数。我包括了一个库,例如可以通过此函数调用的癌症和示例基因。

library(cgdsr)
mycgds = CGDS("http://www.cbioportal.org/")

cancers1 = c("cesc_tcga", "ov_tcga", "ucs_tcga", "ucec_tcga")
genes = c("PTCH1", "PTCH2")

mRNAseqExtractor <- function(){   
  for(i in cancers1){
    i_RNAseq <- paste(i, "_rna_seq_v2_mrna", sep="")        
    i_all <- paste(i, "_all", sep="")        
    getProfileData(mycgds, genes, i_RNAseq, i_all)   } }

mRNAseqExtractor()

基本上,我希望此循环的每次迭代都将此getProfileData(mycgds,hedgehog_genes,i_RNAseq,i_all)的输出保存到新数据框。

PS。 我正在寻找类似的帖子,但无法找到在每次迭代中生成新的全局数据帧的任何内容。

1 个答案:

答案 0 :(得分:3)

您可以使用lapply返回数据框列表。

profiles <- lapply(cancers1, function(i) {
    i_RNAseq <- paste(i, "_rna_seq_v2_mrna", sep="")        
    i_all <- paste(i, "_all", sep="")        
    getProfileData(mycgds, genes, i_RNAseq, i_all)
})

然后,您可以像这样访问各个数据框:

# access first data frame
print(profiles[[1]])