gpt4 book ai didi

r - ShinyTree:如果选中复选框,则将变量设置为值

转载 作者:行者123 更新时间:2023-12-01 00:37:52 24 4
gpt4 key购买 nike

跟进shinyTree: view without selecting .

library(shiny)
library(shinyTree)
server <- shinyServer(function(input, output, session) {
output$tree <- renderTree({
sss=list( 'I lorem impsum'= list(
'I.1 lorem impsum' = structure(list('I.1.1 lorem impsum'='1', 'I.1.2 lorem impsum'='2'),stopened=TRUE),
'I.2 lorem impsum' = structure(list('I.2.1 lorem impsum'='3'), stopened=TRUE)))
attr(sss[[1]],"stopened")=TRUE
sss
})
})
ui <- shinyUI(
shiny::fluidPage(
h4('Shiny hierarchical checkbox')
,shinyTree("tree", checkbox = TRUE)
)
)
shinyApp(ui, server)

enter image description here

我想设置一个变量,如果 I.1.2。 lorem impsum 被选中,它的值为 4 , 例如。

我只知道我必须使用 reactive() .如您所见 here ,我已经学会了如何使用 checkboxGroupInput 做到这一点s,但我不清楚这是否可以在 shinyTree 内完成.我在网上找不到这方面的文档。

如何才能做到这一点?

我也看到了函数 here但我不确定如何使用它们。

最佳答案

作为旁注,我真的很震惊这个包的文档是多么的稀少。

函数get_selected()返回一个向量,可以在 GitHub code 中看到.我要使用 format = "slices" .

考虑以下代码:

library(shiny)
library(shinyTree)
ui <- shinyUI(
shiny::fluidPage(
h4('Shiny hierarchical checkbox'),
shinyTree("tree", checkbox = TRUE),
# table of weights
fluidRow(column("",
tableOutput("Table"), width = 12,
align = "center"))
)
)
server <- shinyServer(function(input, output, session) {
output$tree <- renderTree({
sss=list( 'I lorem impsum'= list(
'I.1 lorem impsum' = structure(list('I.1.1 lorem impsum'='1', 'I.1.2 lorem impsum'='2'),stopened=TRUE),
'I.2 lorem impsum' = structure(list('I.2.1 lorem impsum'='3'), stopened=TRUE)))
attr(sss[[1]],"stopened")=TRUE
sss
})
output$Table <- renderPrint({

names(as.data.frame(get_selected(input$tree, format = "slices")))

})
})
shinyApp(ui, server)

选择 I.1.2 后。 lorem impsum,返回以下内容:

enter image description here

这是一个带有列名的长度为 1 的向量。请注意,使用的是点而不是空格。

因此,如果我们想设置一个变量 x等于 4选择此项后,我们应该查看是否 I.1.2.lorem.impsumnames以上,然后执行分配。
library(shiny)
library(shinyTree)
ui <- shinyUI(
shiny::fluidPage(
h4('Shiny hierarchical checkbox'),
shinyTree("tree", checkbox = TRUE),
fluidRow(column("",
tableOutput("Table"), width = 12,
align = "center")),
fluidRow(column("",
tableOutput("Table2"), width = 12,
align = "center"))
)
)
server <- shinyServer(function(input, output, session) {
output$tree <- renderTree({
sss=list( 'I lorem impsum'= list(
'I.1 lorem impsum' = structure(list('I.1.1 lorem impsum'='1', 'I.1.2 lorem impsum'='2'),stopened=TRUE),
'I.2 lorem impsum' = structure(list('I.2.1 lorem impsum'='3'), stopened=TRUE)))
attr(sss[[1]],"stopened")=TRUE
sss
})

x <- reactive({
if('I.1.2.lorem.impsum' %in% names(
as.data.frame(
get_selected(
input$tree, format = "slices")))){

x <- 4

}
})


output$Table <- renderPrint({

names(as.data.frame(get_selected(input$tree, format = "slices")))

})

output$Table2 <- renderTable({

as.data.frame(x())

})
})
shinyApp(ui, server)

给予

enter image description here

如预期的。

关于r - ShinyTree:如果选中复选框,则将变量设置为值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39209411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com