如何在R中标记重复节点并移除其子节点(附可复现示例)
解决方案
我们可以通过定位目标重复节点的特定实例并修改其名称,同时保留主分支的完整结构,来实现需求:
- 定位需要修改的重复节点:找到父节点不是
Root的B节点(也就是y1的子节点B) - 重命名标记该节点:将这个节点重命名为
B (-r) - 自动保留主分支结构:原
Root下B的子节点(x3、y2)因为关联的是原名称B,不会被关联到重命名后的节点,自然满足“移除重复B的所有子节点”的要求
对应的R代码实现:
library(data.table) # 加载测试数据 testDT = fread( "from to Root A A x1 x1 y1 y1 z1 y1 B Root B B x3 x3 y2 Root C") # 重命名非Root分支下的B节点 testDT[from != "Root" & to == "B", to := "B (-r)"] # 查看处理后的结果 print(testDT)
执行后得到的结果如下:
from to 1: Root A 2: A x1 3: x1 y1 4: y1 z1 5: y1 B (-r) 6: Root B 7: B x3 8: x3 y2 9: Root C
该结果完全符合需求:
y1下的B被标记为B (-r)且无任何子节点Root下的B及其子节点x3、y2的完整层级结构被保留
内容的提问来源于stack exchange,提问作者gokhan can
相关产品推荐
相关产品推荐

