在下面的示例中,我正在创建树的嵌套表示。 我期望子级“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)
看来你提供的是一片森林而不是一棵树,树只有一个根。因此你的 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