2016-01-22 69 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)