这个问题是here开始的。
我有一个无向图g和n<100顶点。图很简单。所有顶点的坐标都是整数(x_i, y_i), i=1, 2,..., n,边集是预先定义的,它们是具有长度1单位的线段。顶点的程度可以是2、3或4。
library(igraph)
g <- graph_from_literal(1-2-3-4-5-6-7-8-1, 8-9-4)
B <- t(matrix(c(0,0, 0,1, 0,2, -1,2, -2,2, -2,1, -2,0, -1,0, -1,1), nrow =2));
V(g)$id <- seq_len(vcount(g))
V(g)$x <- B[,1]; V(g)$y <- B[,2]
plot(g, layout=as.matrix(B))

我需要为顶点设置新属性-- corner属性。
如果顶点i的度为2,且两个入射边不在同一条线上,则它就是corner顶点。在上面的图中,顶点1, 3, 5, 7是角点,而剩余顶点2, 4, 6, 8, 9是非角点。
我的尝试
我已经找到了度等于2的顶点列表。
idv <- V(g)[strength(g)==2]; idv # 1 2 3 5 6 7 9然后给出了i-th顶点的邻域顶点列表。
neigh<-neighborhood(g, idv); neigh错误就在这里,因为我看到了所有顶点的邻域顶点,不只是度等于2的顶点。例如,
neigh[[4]]; neigh[[8]];
#[1] 4 3 5 9
#[1] 8 1 7 9问题:如何使用neighborhood函数为只有度2的顶点找到邻域?
发布于 2019-05-31 10:22:26
这个函数是正确的,但是第二个论点不是关于兴趣点,而是第三个:
neighborhood
# function (graph, order = 1, nodes = V(graph), mode = c("all",
# "out", "in"), mindist = 0)
# {
# ...因此,
length(neighborhood(g, nodes = idv))
# [1] 7做这份工作。
https://stackoverflow.com/questions/56392883
复制相似问题