我有一个数据框显示有向图的信息:
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))
答案 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)