2011-09-01 61 views
4

我有一個相當基本的問題,關於如何寫一個列表到一個文件。 我有Mfuzz ACORE函數生成一個列表,列出了所有我在每個20簇按以下格式的探測器的名稱:我想要將其轉換爲數據幀將列表的列表寫入表中,並將每個列表的名稱列爲列?

[[1]] 
     NAME MEM.SHIP 
ILMN_X ILMN_X 0.9993195 

. 
. 
. 
[[20]] 
     NAME MEM.SHIP 
ILMN_Y ILMN_Y 0.9982345 

,並最終輸出文件,其中列表號碼被包括在列中;

像這樣:

CLUSTER NAME MEM.SHIP 
     1 ILMN_X 0.9993196 
     . 
     . 
     . 
    20 ILMN_Y 0.9982345 

在集羣列表示探頭屬於哪個子列表。每個探測名稱可以屬於多個子列表。 我已經嘗試了不同的東西,像其他職位建議使用plyr,但我總是最後只有一個列表的所有變量,沒有指示他們屬於哪個子列表。

謝謝!

回答

6

如果你原來的列表被稱爲clstrs,我相信這是一個解決辦法:

do.call(rbind, lapply(seq_along(clstrs), function(i){ 
    data.frame(CLUSTER=i, clstrs[[i]]) 
})) 
+0

謝謝!輝煌:D這解決了它! – mdottir

+1

好吧,幾乎沒有輝煌。但是,如果它有效,您可以將我的答案標記爲有用(箭頭高於「分數」)和/或作爲解決方案(綠色標記) –

+1

+1,以便解決方案有效! – Andrie

4

這裏的另一種方式如何皮膚一隻貓。

# make some sample data 
my.df <- data.frame(num = 1:10, val = runif(10)) 
my.list <- list(my.df, my.df, my.df, my.df, my.df, my.df) 
# build index - count the number of rows in each list element that will be 
# used to designate the rows based on their previous list affiliation 
index <- lapply(my.list, nrow) 
index <- rep(1:length(index), times = index) 
# from here on it's basically what Nick did. rbind everything together and 
# put some lipstick on and voila 
my.out <- do.call("rbind", my.list) 
my.out$index <- index 
#or 
my.out <- cbind(my.out, index) 

我有幾分鐘的空閒時間,所以我做了一個快速的基準,每個數據幀使用10e5行。

我與$index解決方案:

user system elapsed 
    0.81 0.27 1.08 

解決方案與cbind

user system elapsed 
    19.92 0.42 20.38 

尼克的解決方案:

user system elapsed 
    1.04 0.26 1.31 
相關問題