R语言 子节点错误地关联到父节点

mfpqipee  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(110)

在下面的例子中,我创建了一个树的嵌套表示。我希望子节点“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)

字符串

axzmvihb

axzmvihb1#

看起来你提供了一个森林而不是一棵树,一棵树只有一个根。因此你的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

我们成功地在公共treeroot下有1和2

相关问题