我想使用 graph 包在R中创建无向图。 我想用
edge.matrix <- unique(edge.matrix, MARGIN = 2, drop=TRUE)
mygraph <- ftM2graphNEL(edge.matrix, edgemode="directed")
但我收到错误消息
Error in .ftM2other(ft, W, V, edgemode, "graphNEL") :
duplicate edges not allowed
问题是该函数看起来是偶数的镜像行,例如A, B
和B, A
,所以我必须找到一种方法
删除“向后”相同的行。
一个例子:说我的矩阵是
A B
C D
B A
,
我想要
A B
C D
或
C D
B A
(抱歉布局,我还不太实际)。
天真的想法是写一个函数,它接受行matrix[i,]
,镜像它,检查矩阵matrix[i+1 : nrow(matrix), ]
是否包含镜像行并可能删除它。不幸的是,计算时间将是~n!/ 2。我不认为即使我在剩下的矩阵中删除了第一个或下面的事件,也不会好多了,因为我的矩阵有大约30k行。
图包有 duplicatedEdges 功能,但它不是我需要的。
有什么想法吗?任何建议都表示赞赏。