我正在构建一个应用程序,有些部分比其他部分需要更多的计算资源。我有一个单独的侧边栏,所有的控件都在那里。它包含一个下拉菜单和一个应用按钮。
我想只执行一些分析,如果下拉菜单,然后点击操作按钮。即两个条件需要为真,以执行代码。
应用程序
#
# This is a Shiny web application. You can run the application by clicking
# the 'Run App' button above.
#
# Find out more about building applications with Shiny here:
#
# http://shiny.rstudio.com/
#
library(shiny)
# Define UI for application that draws a histogram
ui <- fluidPage(
# Application title
titlePanel("Old Faithful Geyser Data"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
shinyWidgets::pickerInput(
inputId = "counterFactual",
label = h4("Select an Analysis"),
choices = c("A", "B", "C", "D"),
selected = "A"
),
actionButton(inputId = "apply", label = "Apply", icon = icon("play"))
),
# Show a plot of the generated distribution
mainPanel(
plotOutput("distPlot")
)
)
)
# Define server logic required to draw a histogram
server <- function(input, output) {
event_trigger <- reactive({
list(input$counterFactual, input$apply)
})
observeEvent(ignoreInit = TRUE, event_trigger(),
{
if(event_triger()[[1]] == "C" && event_triger()[[2]] == TRUE)
print('Hello World')
})
}
# Run the application
shinyApp(ui = ui, server = server)
1条答案
按热度按时间14ifxucb1#
在这种特定情况下(即下拉列表必须真实(参见
shiny::isTruthy()
,需要点击按钮),您可以使用:检查服务器部分-我已经删除了React,现在我们观察按钮和继续(功能
shiny::req()
)只有当下拉是真实的(而不是""在我们的情况下)。我不明白:
为什么它可以等于
"CF1"
,如果这个输入只能是一个字母A-D?所以在你的情况下,Hello World
根本不会被打印。还有:
类型-
event_triger
而不是event_trigger
以及:
您不想检查按钮是否为
TRUE
-在第一次使用后,它将始终为TRUE
(因为这是一个从0开始计数的计数器,只有0
将为FALSE,所以只有在会话中从未使用过时,它才会为FALSE
)如果这一点不明显:
您在
observeEvent()
中使用print()
,因此Hello World
将在控制台中打印,而不是应用程序(对于应用程序,您将需要renderText
)。