Advertisement
Guest User

Untitled

a guest
Feb 12th, 2016
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.39 KB | None | 0 0
  1. simple_graph = list(a = c('a', 'b', 'cc'), b = c('b', 'd'), cc = c('cc', 'd'), d = 'd')
  2.  
  3. extract_branches <- function(x, graph){
  4. br <- graph[[x]]
  5. if(length(br) == 1) x else {
  6. if(length(br) == 2) paste(x, extract_branches(br[2], graph), sep = "|") else {
  7. sapply(br[-1], FUN = function(z) sapply(extract_branches(z, graph), FUN = function(w){paste(x, w, sep = "|")}, USE.NAMES = FALSE))
  8. }}
  9. }
  10.  
  11. extract_branches('a', simple_graph)
  12. # b cc
  13. # "a|b|d" "a|cc|d"
  14.  
  15. graph1 <- list(a = c('a', 'b', 'cc'), b = c('b', 'z'), cc = c('cc', 'd', 'g', 'h'), d = c('d', 'e', 'f'), e = c('e', 'z'), f = c('f', 'z'), g =c('g', 'z'), h = c('h', 'i', 'j'), i = c('i', 'd'), j = c('j', 'e'), z = 'z')
  16.  
  17. extract_branches('a', graph1)
  18. #$b
  19. #[1] "a|b|z"
  20.  
  21. #$cc
  22. #$cc$d
  23. #[1] "a|cc|d|e|z" "a|cc|d|f|z"
  24.  
  25. #$cc$g
  26. #[1] "a|cc|g|z"
  27.  
  28. #$cc$h
  29. #[1] "a|c("cc|h|i|d|e|z", "cc|h|i|d|f|z")" "a|cc|h|j|e|z"
  30.  
  31. graph2 <- list(a = c('a', 'b', 'cc'), b = c('b', 'z'), cc = c('cc', 'd', 'h'), d = c('d', 'e', 'f'), e = c('e', 'z'), f = c('f', 'z'), h = c('h', 'i', 'j'), i = c('i', 'd'), j = c('j', 'e'), z = 'z')
  32.  
  33. extract_branches('a', graph2)
  34. #$b
  35. #[1] "a|b|z"
  36.  
  37. #$cc
  38. #$cc[[1]]
  39. #[1] "a|cc|d|e|z"
  40.  
  41. #$cc[[2]]
  42. #[1] "a|cc|d|f|z"
  43.  
  44. #$cc[[3]]
  45. #[1] "a|cc|h|i|d|e|z" "a|cc|h|i|d|f|z"
  46.  
  47. #$cc[[4]]
  48. #[1] "a|cc|h|j|e|z"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement