这个问题已经被问过几次了,但它们都是用不同的语言(例如,见here for java和here for python,但我试图用R实现这个目标.
我有一棵树.我的树按照深度优先左侧遍历排序,如下代码所示:
df <- data.frame(
var = c("x2", NA, NA, "x1", NA, "x2", "x2", NA, NA, NA, "x2", NA, "x10", NA, NA, NA, "x1", NA, NA, "x5", NA, NA),
node = c(1, 2, 3, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 1, 1, 2, 3, 1, 2, 3),
terminal = c(FALSE, TRUE, TRUE, FALSE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE),
iteration = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2),
treeNum = c(1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 1, 2, 2, 2, 3, 3, 3),
stringsAsFactors = FALSE
)
该办公室的 struct 如下:
var =变量名(如果是终端 node 或stump,则这只是NA)
node = node 编号
终端=是否是终端 node .
迭代=迭代次数
树号=树号
正如你所看到的,我的rabrame包含了2次迭代的3棵树.
为了清楚起见,如果我们看一棵树(例如,迭代1中的树号为2),它看起来像下面的图像(其中 node 按照遍历方法编号):
此树的深度(按深度优先的左侧方法排序)将为:0,1,1,2,3,3,2
最终,我想做一个depth
列添加到我的框架,但我努力使代码工作.有什么建议我怎么做吗?