2014-10-06 3 views
1

내 데이터는 다음의 행렬로 보이는 : 그런R : 트리 중복 문자열

V621 --> V62123 --> V6212355 
     --> V621335 --> V62133526 
     --> V6216 --> V62162 
     --> V621213452 
     --> V62126324 

또는 뭔가를 다음과 같이

verkoop   V621 
verkoopcode  V62123 
verkoopcodenaam V6212355 
verkoopdatum  V621335 
verkoopdatumchar V62133526 
verkooppr  V6216 
verkoopprijs  V62162 
verkoopsafdeling V621213452 
verkoopsartikel V62126324 

지금, 내가 R에 나무를 만들고 싶어. 서브 스트링이 겹치는 것을 고려할 수 있도록

답변

2

igraph 패키지의 minimum.spanning.tree 기능을 사용하여 이러한 트리를 작성할 수 있습니다.

# load data 
df <- read.table(text='verkoop   V621 
verkoopcode  V62123 
verkoopcodenaam V6212355 
verkoopdatum  V621335 
verkoopdatumchar V62133526 
verkooppr  V6216 
verkoopprijs  V62162 
verkoopsafdeling V621213452 
verkoopsartikel V62126324') 
# use igraph package 
require(igraph) 
# create adjacency matrix 
adj <- nchar(sapply(df$V1, gsub, x=df$V1, replacement='')) 
adj[!sapply(df$V1, grepl, x=df$V1)] <- 0 
# name adjecency matrix 
colnames(adj) <- df$V2 
# original graph 
gr <- graph.adjacency(adj, mode='directed', weighted=TRUE) 
# minimum spanning tree 
mst <- minimum.spanning.tree(gr) 
# e.g. for graphical representation 
plot(mst, vertex.size=40)