【发布时间】:2019-05-08 11:04:47
【问题描述】:
这个问题是question的继续。
我将n 点与(x, y) 坐标组织在矩阵中,如下所示:
A <- t(matrix(c(
0, 0, 1, 0, 1,-1, 1,-2, 0,-2,-1,-2,-2,-2,-2,-1,-1,-1, 0,-1, 0, -2, 0,-3,
0,-4,-1,-4,-1,-3,-1,-2, 0,-2, 1,-2, 2,-2, 2,-3, 1,-3, 0,-3, 0,-2, 0,-1, 0, 0), nrow =2));
如您所见,k=8 对重复了 (x,y) 坐标。
编辑。
ids <- which(duplicated(A))
k <- length(ids)
我创建了 igraph 对象g 并绘制它。具有重复坐标的节点在图中用红色表示。有的重复两次,有的重复三四次。
library(igraph)
g <- make_empty_graph(n=nrow(A))
g <- g + path(seq_len(nrow(A)))
V(g)$id <- seq_len(vcount(g))
V(g)[V(g)$id %in% ids]$color <- "red"
plot(g, layout=as.matrix(A),
edge.arrow.size = 0.3,
edge.curved = TRUE
)
我需要将坐标重复的节点合并为一个节点。
问题。 是否可以将坐标重复的节点合并为一个节点?重复的边缘也应该合并到一个边缘。边缘的方向可以省略。
【问题讨论】:
-
也许将每个唯一坐标作为您正在寻找的简单解决方案。它确实没有合并,但它只会显示不同的行,您可以在之后绘制它们。你可以这样做:
A <- unique(A) -
@Newl,我已经尝试过你的建议。节点集是对的,但边的顺序不对。
-
哦,我明白了。如果您觉得可以,您可以使用 delete_vertices() 手动删除额外的节点。要查找索引,您必须使用 which(duplicated(A)). 找到重复项的索引