2016-01-22 66 views
1

我有以下類型的AA數據幀:擴展/擴大與各列表的列數據幀分成行

df <- data.frame("col1" = c(1,2,3,4)) 
df$col2 <- list(list(1,1,1),list(2,2,2),list(3,3,3),list(4,4,4)) 
df$col3 <- list(c(1,1,1),c(2,2,2),c(3,3,3),c(4,4,4)) 

df 

而獲得:

col1 col2 col3 
1 1 1, 1, 1 1, 1, 1 
2 2 2, 2, 2 2, 2, 2 
3 3 3, 3, 3 3, 3, 3 
4 4 4, 4, 4 4, 4, 4 

現在我想操縱這個數據幀得到像這樣的東西:

col1 col3 
1 1 1 
    1 1 
    1 1 
2 2 2 
    2 2 
    2 2 
3 3 3 
    3 3 
    3 3 
... 

現在我可以用一個簡單的循環做到這一點。對於每一行我將列表轉換爲數據框。然後,我使用rbind將數據幀附加到單個數據幀中。

我的問題是:我該如何做矢量化函數?

我試過apply,sapply,mapplyReduce但沒有成功。 apply是唯一實際執行但產生不正確結果(只有每個列表的第一個元素)。

+1

我們可以試着'LST < - lapply(DF [-1],不公開)'然後使用'data.frame(lst)' – akrun

+0

我建議避免創建一個data.frame列表列以開始。 – Roland

+0

@akrun你的建議似乎有效。想要添加該答案作爲答案,以便我可以將其標記爲正確?謝謝。 – user2051561

回答

2

我們可以在其他列中刪除第一欄(df[-1]),環,unlist然後轉換到listdata.frame

lst <- lapply(df[-1], unlist) 
dfN <- data.frame(lst)