shinyTree:如果选中复选框,则将变量设置为值
shinyTree: set variable to value if checkbox is checked
跟进 。
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)
我想设置一个变量,如果 I.1.2。选择了 lorem impsum,它的值为 4
,例如。
我只知道我必须使用reactive()
。如您所见 ,我已经学会了如何使用 checkboxGroupInput
来执行此操作,但我不清楚是否可以在 shinyTree
中完成此操作。我在网上找不到这方面的文档。
如何做到这一点?
我也看到了函数 here 但不知道如何使用它们。
附带说明一下,我真的很震惊这个包的文档如此之少。
函数get_selected()
returns一个向量,在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,返回以下内容:
这是一个长度为 1 的向量,带有列名。请注意,使用的是点而不是空格。
因此,如果我们要在选择这个的时候设置一个变量x
等于4
,我们应该看看I.1.2.lorem.impsum
是否在上面的names
中,然后执行作业。
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)
给予
随心所欲。
跟进
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)
我想设置一个变量,如果 I.1.2。选择了 lorem impsum,它的值为 4
,例如。
我只知道我必须使用reactive()
。如您所见 checkboxGroupInput
来执行此操作,但我不清楚是否可以在 shinyTree
中完成此操作。我在网上找不到这方面的文档。
如何做到这一点?
我也看到了函数 here 但不知道如何使用它们。
附带说明一下,我真的很震惊这个包的文档如此之少。
函数get_selected()
returns一个向量,在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,返回以下内容:
这是一个长度为 1 的向量,带有列名。请注意,使用的是点而不是空格。
因此,如果我们要在选择这个的时候设置一个变量x
等于4
,我们应该看看I.1.2.lorem.impsum
是否在上面的names
中,然后执行作业。
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)
给予
随心所欲。