2017-04-21 90 views
1

這是我的第一篇文章,因此對任何不便之處表示道歉。將每個循環的結果保存爲新的數據框

我想從它的函數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。 我正在尋找類似的帖子,但找不到任何在每次迭代中生成新的全局數據幀。

+0

寫一個函數'F(癌症)'提取配置文件數據的單一數據點,然後使用'lapply'來生成一個dataframes列表(或者'getProfiledata'的輸出)。 '輸出< - lapply(cancers1,f)' –

回答

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]]) 
相關問題