0

我有这种类型的数据

     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)

树渲染得很好

在此处输入图像描述

  • 有没有更好的方法从我拥有的数据结构中获取树?
  • 如何像这样选择并关闭所有节点来渲染树?

在此处输入图像描述

4

0 回答 0