我有这种类型的数据
level1 level2
1 fruit apple
2 fruit orange
3 vegetable carrot
4 vegetable celery
我想把它变成一个 shinyTree 并在所有节点被选中(并关闭)的情况下渲染它
这是我的尝试
library(shiny)
library(data.tree)
library(shinyTree)
dta <-
data.frame(
stringsAsFactors = FALSE,
level1 = c("fruit", "fruit", "vegetable", "vegetable"),
level2 = c("apple", "orange", "carrot", "celery")
)
ui <- fluidPage(
shinyTree::shinyTree("tree_food", checkbox = TRUE)
)
server <- function(input, output, session) {
tree_food <- reactive({
# create tree
dta$pathString <- paste("p",
dta$level1,
dta$level2,
sep = "/",
na.rm = TRUE)
htree <- data.tree::as.Node(dta["pathString"], pathDelimiter = "/", na.rm=TRUE)
# turn it into list format for {shinyTree}
TreeList <- data.tree::ToListSimple(htree, nameName = "")
# remove the 'name' node
TreeList$name <- NULL
TreeList
})
output$tree_food <- renderTree({tree_food()})
}
shinyApp(ui, server)
树渲染得很好
- 有没有更好的方法从我拥有的数据结构中获取树?
- 如何像这样选择并关闭所有节点来渲染树?