【问题标题】:How to ensure that an action only triggers when an action button is pressed with Shiny如何确保仅在使用 Shiny 按下操作按钮时触发操作
【发布时间】:2019-10-18 05:18:55
【问题描述】:

我正在尝试构建一个闪亮的应用程序,它可以获取一些 Twitter 信息。 我只想运行在按下操作按钮时进行 twitter API 调用的函数。 我设置了一个操作按钮,并将其附加到一个隔离功能,但是当我打开应用程序时,它会立即尝试获取 twitter 数据。

逻辑是,

  1. 打开应用

  2. 在文本输入框中输入搜索词

  3. 点击操作按钮

  4. 执行服务器代码,并返回一个 df 和我的 twitter 信息

library(shiny)
ui <- fluidPage(

  # Application title
  #titlePanel("Twitter Analytics"),

  fluidRow( 
    column( 4, titlePanel("Twitter Analytics")),
    column( 3),#, textOutput("mysearch") ),
    column( 4, textInput("searchstring", 
                      label = "",
                      value = "")),
    column(1, 
           br(),
           actionButton("action", "go"))

  )
)

server <- function(input, output) {

  output$mysearch  <- renderText({

    input$action

    df <- isolate(search_tweets( input$searchstring , n = 500, include_rts = FALSE))
  }) 
}

shinyApp(ui, server)

如何确保仅在单击此按钮时发生此事件

【问题讨论】:

  • 这个答案对你有用吗?

标签: r shiny


【解决方案1】:

你可以使用eventReactive()

  twitter <- eventReactive(input$action,{
    search_tweets(input$searchstring)
  })

  output$mysearch  <- renderText({
    twitter()
  }) 

因为我没有你的推特功能,所以我模拟了一个:

search_tweets <- function(search) return(search)

完整的可重现示例:

search_tweets <- function(search) return(search)

library(shiny)
ui <- fluidPage(

  # Application title
  #titlePanel("Twitter Analytics"),

  fluidRow( 
    column( 4, titlePanel("Twitter Analytics")),
    column( 3, textOutput("mysearch") ),
    column( 4, textInput("searchstring", 
                         label = "",
                         value = "")),
    column(1, 
           br(),
           actionButton("action", "go"))

  )
)

server <- function(input, output) {

  twitter <- eventReactive(input$action,{
    search_tweets(input$searchstring)
  })

  output$mysearch  <- renderText({
    twitter()
  }) 
}

shinyApp(ui, server)

【讨论】:

    猜你喜欢
    • 2021-08-16
    • 2013-05-04
    • 2013-08-28
    • 2017-12-27
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多