2014-06-20 7 views
1

igraph에 의한 버텍스 시퀀스가 ​​시퀀스가 ​​아닌 것처럼 보입니다. 예를 들면 : 나는 [deg==1]하여 액세스 할 수 있기 때문에 V(module.net)버텍스 시퀀스에서 버텍스 가져 오기

enter image description here

은 V 순서는 순서입니다. 하지만 시도 할 때 작동하지 않는 이유는 무엇입니까 peripheral[1]? 이것에 대한 가능한 설명은 무엇입니까?

이 예제의 데이터 세트는 포함하기 쉽지 않습니다. 유감스럽게 생각합니다.

//

내가 답을 찾을, 첫 번째 정점 'MED24'의 인덱스는 내가 첫 번째 정점을 얻으려면 그래서, peripheral[1]을 할 필요가 1 대신에, 4입니다. 그러나 이것은 약간 비합리적인 것처럼 보입니다. replicatable 예 : 당신이 온도에서 '노드 3'를 액세스하려면

g = graph.ring(5) 
V(g)$name = c('node1', 'node2', 'node3','node4','node5') 
temp = V(g)[2:3] 

, 대신 내가 항상 정점 시퀀스 및 가장자리에 문제를 했어 temp[2]

enter image description here

+0

오류를 복제 할 수 없습니다. –

+0

@RussHyde 효과가있는 테스트를 공유 할 수 있습니까? 아마도 여러분의 시퀀스에 꼭지점 1을 포함시킨 다음'[1]'에 의해 인덱스를 만들었습니까? – MrFlick

+0

예, 죄송합니다. 나는 내 방식의 오류를 보았다. –

답변

0

temp[3]을 사용해야합니다 시퀀스. 이러한 객체에 대한 색인 연산자의 문제점은 위치가 아닌 벡터 이름으로 검색된다는 것입니다. 따라서 peripheral[1]은 벡터 1이 목록에 있는지 확인하려고합니다. 목록에서 첫 번째 요소를 추출하지 않습니다.

내가 가진 가장 좋은 것은 시퀀스를 간단한 벡터로 변환하고 벡터 목록을 다시 인덱싱하는 것입니다. 당신은 단지 다음, 특정 정점의 이름을 추출 할 경우 예를

사실
el <- cbind(letters[1:5], letters[c(2,3,5,1,4)]) 
gg <- graph.edgelist(el) 
p <- V(gg)[c(2,3)] 
V(gg)[as.vector(p)[1]] 

를 들어,

p$name[1] 

가 작동합니다.

+0

네 방법은 작동합니다. 내 보충제를 봐라. 그러나 이것은 조금 불편합니다 – yliueagle

+0

@yliueagle 내 업데이 트를 참조하십시오. 정점의 이름을 원하면'peripheral $ name [1]'을 사용할 수 있습니다. 아마 그게 네가 원하는 것일거야. 'as.vector '는 필요 없습니다. – MrFlick

관련 문제