子节点错误地关联到父节点

问题描述 投票:0回答:1

在下面的示例中,我正在创建树的嵌套表示。 我期望子级“1,a”和“1,b”与父级“1”相关联。然而它最终与父级“2”相关联,但它不应该相关联。您对出了什么问题有任何想法吗?

library(data.tree)
data <- data.frame(
  Name = c("A", "A1", "A2", "A1a", "A1b", "A2a", "A2b", "A2c","B"),
  Path = c("1", "1,a", "1,b", "1,a,1", "1,a,2", "1,b,1", "1,b,2", "1,b,3","2")
)

my_tree <- data %>%
  rowwise() %>%
  mutate(pathString = strsplit(Path, ',') %>% unlist() %>% paste(collapse = '/')) %>%
  as.Node()

treeToList <- function(node) {
  list(
    text = node$Name,
    li_attr = list(id = node$Path),
    state = list(opened = TRUE),
    children = Map(
      node$children,
      f = treeToList
    )
  )
}

treeToList(my_tree)

r tree data.tree
1个回答
0
投票

看来你提供的是一片森林而不是一棵树,树只有一个根。因此你的 1 和 2 应该有一个共同的根,并且这应该是明确的

# the diagram you started with 
  levelName
1 1        
2  ¦--a    
3  ¦   ¦--1
4  ¦   °--2
5  °--b    
6      ¦--1
7      ¦--2
8      °--3

新代码

my_tree <- data |>
  rowwise() |>
  mutate(Path=paste0("treeroot,",Path)) |>  # ! The Change ! # 
  mutate(pathString = strsplit(Path, ',') |> unlist() |> paste(collapse = '/')) |>
  as.Node()

my_tree
       levelName
1  treeroot     
2   ¦--1        
3   ¦   ¦--a    
4   ¦   ¦   ¦--1
5   ¦   ¦   °--2
6   ¦   °--b    
7   ¦       ¦--1
8   ¦       ¦--2
9   ¦       °--3
10  °--2   

我们成功地在共同点下拥有了 1 和 2

treeroot

© www.soinside.com 2019 - 2024. All rights reserved.