【发布时间】:2017-10-24 20:59:33
【问题描述】:
我有一个受限于 R 的简单问题。我实际上是一种二叉树,其中只有终端叶具有与之关联的值。一个玩具示例可见here.
本质上,我在深度最大的叶子之间执行操作(在深度关系中,顺序无关紧要)。我在这里添加了它,但实际上,它们正被插入到一个更复杂的公式中。
我的代码仅限于 R。这个结构可以用这个命令来表示,虽然我是通过其他方式获得的:
testBranch<-list(list(list(list(20,15),40),list(10,30)),5) #Depth of 4
我有一个工作函数来确定最深层次的深度,但 R 中的嵌套列表令人难以置信。任何线索如何有效地找到一组 indexes 以访问最深的值?例如,在上面的玩具示例中
testBranch[[1]][[1]][[1]]
会给我我想要的,一个包含 2 个元素的列表。使用我的加法示例,我可以这样做:
indexesOI<-getIndexes(testBranch)
testBranch[indexesOI]<-testBranch[indexesOI][1]+testBranch[indexesOI][2]
#testBranch now has depth of 3
导致在toy example,中对应于步骤1的树可以在R中表示为:
testBranchStep1<-list(list(list(35,40),list(10,30)),5)
如果需要,我愿意使用包。只是不想在 R 中重写整个节点类/dfs,因为我对类系统没有太多经验。我查看了 data.tree,但没有运气将我的嵌套列表强制转换为它们的数据结构。
您能提供的任何帮助都会很棒!请原谅匆忙制作的 ASCII 树。我主要是自学成才,在这里没有问太多问题,所以如果我需要调整格式,也请告诉我!谢谢!
【问题讨论】:
标签: r tree binary-tree depth-first-search nested-lists