我有一个列,其中每个行元素都用“/”分隔:
data.frame(column=c("a","a/air","a/aero/breath","b","b/boy","b/bag/band/brand"))
在每个"/"后面,我如何将其转换为嵌套列表。目标是获得:
list(a=list("air"=1,aero=list("breath"=1)),b=list("boy"=1,bag=list(band=list("brand"=1))))
我需要这个来使用shinyTree包从列中创建一棵树。
我在层级的最后一个元素末尾添加了“=1”,因为它必须显示在shinyTree输出中。 然后可以将列表放入下面的代码中以获取tree
:
library(shiny)
library(shinyTree)
tree <- list(a=list("air"=1,aero=list("breath"=1)),b=list("boy"=1,bag=list(band=list("brand"=1))))
typeof(tree)
ui <- fluidPage(
fluidPage(
sidebarLayout(
sidebarPanel(
actionButton('reset', 'Reset nodes')
),
mainPanel(
shinyTree("tree", ),
hr(),
"Selected nodes:",
verbatimTextOutput("idSelected")#,
)
)
)
)
server <- function(input, output, session) {
treeSelection <- reactiveVal(list())
output$tree = renderTree({
tree
})
observeEvent(input$reset, {
updateTree(session, "tree", data = tree)
treeSelection(list())
})
observeEvent(input$tree, {
treeSelection(get_selected(input$tree, format = "classid"))
})
output$idSelected <- renderPrint({
treeSelection()
})
}
shinyApp(ui, server)