2014-04-20 1 views
2

R에서 igraph를 배우고 노드를 그래프에 추가하고 노드 두 개를 지정하여 에지를 삭제하는 방법에 대한 질문이 있습니다. 다음은 네 개의 노드와 일부 에지가있는 그래프를 만드는 코드입니다. 노드를 추가하고 Rigraph에서 지정된 에지를 삭제하십시오.

g <- as.data.frame(cbind(matrix(c(1, 2, 1, 3, 1, 4, 3, 4, 2, 4), byrow = TRUE, ncol = 2), c(5.6, 2.7, 3.5, 1.8, 2.1))) 
names(g) <- c("start", "end", "length") 
g <- graph.data.frame(g, directed = FALSE) 
plot(g) 

enter image description here

여기

length

는 속성을 가장자리 (에지의 길이)을 나타낸다. 그래프에 노드 5를 추가하고 싶습니다. 이 노드는 1과 2 사이에있게됩니다. 이제 가장자리 1--2의 길이는 5.6입니다. 노드 5는 노드 1에서 2.6의 거리와 노드 2에서 3.0의 거리를가집니다.이 두 에지 (1-5 및 2-5)를 추가하려고합니다. 또한 노드 1과 노드 2 사이의 에지를 삭제하도록 R에 지시하여 1--2 에지를 제거해야합니다.

이 작업을 수행하는 간단한 방법은 무엇입니까? 고맙습니다.

답변

5

같은 :

library(igraph) 

g <- as.data.frame(cbind(matrix(c(1, 2, 1, 3, 1, 4, 3, 4, 2, 4), 
           byrow = TRUE, ncol = 2), 
         c(5.6, 2.7, 3.5, 1.8, 2.1))) 
names(g) <- c("start", "end", "length") 

g <- graph.data.frame(g, directed = FALSE) 

# add node 5 
g <- g + vertices(5) 

# delete edge 1-2 
g["1", "2"] <- NULL 

# add new edges with length attribute 
g <- g + edge("1", "5", attr=list(length=2.6)) 
g <- g + edge("2", "5", attr=list(length=1.3)) 

plot(g) 

enter image description here

+0

I '는 g <사용하는 경우 - delete.edges (g, C ("1", "2"))', 두 가장자리 (1-- 2 및 1--3) 모두 삭제됩니다. –

+1

참으로. 사과. 나는 내가 만든 수정이 트릭을해야한다고 생각한다. ("delete"라인을 바꾼다.) – hrbrmstr

+0

잘 작동한다. 고맙습니다. 그런데,'delete.edges'를 사용하여 그 가장자리를 지우려면 어떤 코드를 사용해야합니까? –

관련 문제