我正在使用 data.tree 包在 R 中处理树结构。我想将树截断到特定级别,仅保留达到该级别的节点并删除所有更深的级别。例如,如果我有一棵有 4 个级别的树(根、子代、孙子、曾孙),我想将其截断为 2 级,只保留根、子代和孙子。
library(data.tree)
# Create a sample tree
tree <- Node$new("A")
tree$AddChild("B")
tree$AddChild("C")
tree$B$AddChild("D")
tree$B$AddChild("E")
tree$C$AddChild("F")
tree$C$AddChild("G")
tree$B$D$AddChild("H")
print(tree, "name")
我正在寻找一种可靠且有效的方法来截断树而不修改原始树结构。
救命!
使用
Clone
功能:
Clone(tree, \(x) length(x$path) <= 3) #root, children, and grandchildren.
levelName
1 A
2 ¦--B
3 ¦ ¦--D
4 ¦ °--E
5 °--C
6 ¦--F
7 °--G
Clone(tree, \(x) length(x$path) <= 2) #root, children
levelName
1 A
2 ¦--B
3 °--C