【问题标题】:data.tree in r how to add levels to existing nodesr中的data.tree如何向现有节点添加级别
【发布时间】:2017-06-03 00:42:38
【问题描述】:

学习使用data.tree结构

所以我创建了一个根节点

alltree<-Node$new("all")

然后我得到了一个可以附加到它的df

f<-structure(list(parent = c("all", "all", "all", "all", "all", 
"all", "all", "all"), Kid = c("A", "B", "C", "D", "E", "F", "G", 
"H"), ID = 1:8), .Names = c("parent", "Kid", "ID"), row.names = c(NA, 
-8L), class = "data.frame")

f$pathString <- paste("all", f$Kid, sep = "/")

alltree <-as.Node(f)

到目前为止一切都很好,但我想添加另一层

d <- structure(list(SUBZONE = c("A1", "A2", "A3", "A4", "A8", "B10", 
"B11", "B2", "B3", "B4"), ZONE = c("A", "A", "A", "A", "A", "B", 
"B", "B", "B", "B"), ID = c(1L, 2L, 3L, 4L, 5L, 7L, 8L, 9L, 10L, 
11L)), .Names = c("SUBZONE", "ZONE", "ID"), row.names = c(NA, 
10L), class = "data.frame")

现在如何将它添加到现有的相应节点?我不想重新创建pathString,因为它会清除第二级字段(“ID”)。

d$pathString <- paste("all", d$ZONE,d$SUBZONE, sep = "/")
alltree <-as.Node(d)

或者它只是我需要一次性创建它的工具限制 - 整个树然后添加字段/属性?我有一棵 7 层深的树,需要在每一层添加属性/字段

【问题讨论】:

    标签: r


    【解决方案1】:

    我不确定如何使用两个单独的 data.frame 来执行此操作,但我们可以将它们合并到一个 data.frame 中,然后绘制它。

    colnames(d)[1] = "Kid"
    e = rbind.data.frame(f[, c("Kid", "pathString")], d[, c("Kid", "pathString")])
    
    > head(e,10)
       Kid pathString
    1    A      all/A
    2    B      all/B
    3    C      all/C
    4    D      all/D
    5    E      all/E
    6    F      all/F
    7    G      all/G
    8    H      all/H
    9   A1   all/A/A1
    10  A2   all/A/A2
    
    alltree <-as.Node(e)
    plot(alltree)
    

    【讨论】:

    • 我希望有一种添加关卡的方法,这种方法不允许我添加字段/属性,特别是如果每​​个关卡的名称/模式都不同。合并它需要所有节点的属性相同
    • @Slav 每个级别有多少个节点?您可以单独添加子节点
    • 这是一个非常可观的数字。一般来说,它只是一种替代 selectize 的原型,基本上您不仅可以键入节点的名称,还可以键入属性。假设我们想象动物,您可以输入“狮子”、“猫科动物”或“黄色鬃毛”。只是我想开发的一个概念。 Selectize 不会让您使用选择列表的所有属性,但 nods 可以有很多字段
    猜你喜欢
    • 1970-01-01
    • 2018-02-17
    • 2014-05-14
    • 2015-09-16
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 1970-01-01
    相关资源
    最近更新 更多