我有以下代碼,您可以在其中輸入字串,單擊按鈕并根據輸入的字串獲得結果:
# ui.R
ui <- fluidPage(
conditionalPanel(
"input.btn_input === 0",
textInput("caption", "Caption", "abc"),
actionButton("btn_input", "Enter")
),
conditionalPanel(
"input.btn_input !== 0",
style = "display: none;",
verbatimTextOutput("value")
)
)
# server.R
server <- function(input, output) {
Response <- eventReactive(input$btn_input, {
v <- input$caption
if (v == "xxx") {
# Allow to use the chart
} else {
"Error"
}
})
output$value <- renderPrint({
Response()
})
}
現在,# Allow to use the chart我不想插入 Shiny 示例中包含的圖表,即:
ui <- fluidPage(
titlePanel("Old Faithful Geyser Data"),
sidebarLayout(
sidebarPanel(
sliderInput("bins",
"Number of bins:",
min = 1,
max = 50,
value = 30)
),
mainPanel(
plotOutput("distPlot")
)
)
)
server <- function(input, output) {
output$distPlot <- renderPlot({
x <- faithful[, 2]
bins <- seq(min(x), max(x), length.out = input$bins 1)
hist(x, breaks = bins, col = 'darkgray', border = 'white')
})
}
shinyApp(ui = ui, server = server)
誰能建議我怎么做?我能做的最好的就是顯示側邊欄面板。提前致謝。
uj5u.com熱心網友回復:
我們可以用shinyjs包來根據條件顯示和隱藏元素。
例如,我們可以sidebarLayout用 a包裝div它,給它一個唯一的 id 引數。這是一個示例代碼:
library(shiny)
library(shinyjs)
ui <- fluidPage(
titlePanel("Old Faithful Geyser Data"),
#initialize shinyjs
shinyjs::useShinyjs(),
textInput("caption", "Caption", "abc"),
hidden(verbatimTextOutput("value")),
shinyjs::hidden(div(
id = "sidebar_part",
sidebarLayout(
sidebarPanel(
sliderInput("bins",
"Number of bins:",
min = 1,
max = 50,
value = 30
)
),
mainPanel(
plotOutput("distPlot")
)
)
))
)
server <- function(input, output) {
# condition to show the sidebarLayout
observeEvent(input$caption,
{
if (input$caption == "xxx") {
shinyjs::hide("caption")
shinyjs::show("sidebar_part")
shinyjs::hide("value")
} else {
shinyjs::show("value")
output$value <- renderText({
"error"
})
}
},
ignoreInit = TRUE
)
output$distPlot <- renderPlot({
x <- faithful[, 2]
bins <- seq(min(x), max(x), length.out = input$bins 1)
hist(x, breaks = bins, col = "darkgray", border = "white")
})
}
shinyApp(ui = ui, server = server)

編輯:
提供錯誤答案時,使用actionButton并隱藏除錯誤之外的所有內容。
library(shiny)
library(shinyjs)
ui <- fluidPage(
titlePanel("Old Faithful Geyser Data"),
# initialize shinyjs
shinyjs::useShinyjs(),
div(
id = "caption_and_send",
textInput("caption", "Caption", "abc"),
actionButton("send", "Send")
),
hidden(verbatimTextOutput("value")),
shinyjs::hidden(div(
id = "sidebar_part",
sidebarLayout(
sidebarPanel(
sliderInput("bins",
"Number of bins:",
min = 1,
max = 50,
value = 30
)
),
mainPanel(
plotOutput("distPlot")
)
)
))
)
server <- function(input, output) {
# condition to show the sidebarLayout
observeEvent(input$send,
{
if (input$caption == "xxx") {
shinyjs::hide("caption_and_send")
shinyjs::show("sidebar_part")
} else {
shinyjs::hide("caption_and_send")
shinyjs::show("value")
output$value <- renderText({
"error"
})
}
},
ignoreInit = TRUE
)
output$distPlot <- renderPlot({
x <- faithful[, 2]
bins <- seq(min(x), max(x), length.out = input$bins 1)
hist(x, breaks = bins, col = "darkgray", border = "white")
})
}
shinyApp(ui = ui, server = server)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/469453.html
