Я пытаюсь сделать дерево в R и рассчитать расстояние между двумя узлами.Сделайте дерево в R с родителями
Фрейм данных, чтобы сделать дерево, как:
tree.source <- data.frame(ID = 1:10, parentID = c(NA,1,1,1,2,2,2,3,4,4))
#ID parentID
#1 NA
#2 1
#3 1
#4 1
#5 2
#6 2
#7 2
#8 3
#9 4
#10 4
И надеемся создать древовидную структуру, подобную этой
Кроме того, я также хочу, чтобы получить расстояние между 2 узла. Например, расстояние между узлом 5 и 10 здесь составляет 4, через 5-2-1-4-10. Есть 4 края, чтобы связать их. Расстояние между узлами 2 и 8 равно 3, через 2-1-3-8.
Дерева можно строить, используя data.tree
пакет с дорожками для каждого узла, например, PathString
для узла 10 должно быть задано как 1/4/10, но PathString
может быть очень длинным, когда число уровней увеличения , Есть ли лучший способ построить дерево?
alteranative является ' igraph'. Для чтения и создания графика используйте 'g = graph_from_data_frame (na.omit (tree.source [2: 1])); plot (g, layout = layout_as_tree) '. Затем есть функции для поиска простых или кратчайших путей. – user20650
С такими функциями, как 'get.shortest.paths (g, 2, 8, mode =" all ")', который возвращает '2/1/3/8', как и ожидалось. – thelatemail
@ user20650, он работает, спасибо! А также показывает лучший сюжет. Также спасибо за редактирование! –