从没有for循环的特定data.frame创建边数据集

时间:2015-10-22 16:28:27

标签: r dataframe

我有一个数据框显示有向图的信息:

  point connectTo
1     A      B, C
2     B      A, C
3     D          

专栏"点"让我们知道图中的所有点。 列的每个元素" connectTo"是一个列表,包含该点的所有点(在列#34;点")连接到。

如何制作这样的边缘数据框:

 source destination
1      A      B
2      A      C
3      B      C
4      B      A

图表相当大(有400,000个节点和~3000,000边缘);因此,没有for-loop的解决方案会很好。

提前谢谢你。

编辑: 等级" connectTo"是清单。下面是制作样本数据框的代码:

point <- c("A","B","D")
connectTo <- list(list("B","C"),list("A","C"),list())
test <- data.frame(point, I(connectTo))

1 个答案:

答案 0 :(得分:0)

不是最优雅的,但应该这样做:

tmp <- apply(test,1,function(x){pt <- x$point[1];return(Reduce(rbind,lapply(x$connectTo,function(y){print(y);return(matrix(ncol=2,c(pt,y)))})))})
final_matrix = Reduce(rbind, tmp)