如何确保仅在使用Shiny按下操作按钮时才触发操作

时间:2019-06-02 10:03:44

标签: r shiny

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

逻辑是

  1. 打开应用

  2. 在textInput框中输入搜索词

  3. 点击操作按钮

  4. 服务器代码被执行,并返回一个包含我的Twitter信息的df

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)

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

1 个答案:

答案 0 :(得分:1)

您可以使用from sys import stdin def transform(text): return text.upper() open_tag = '[[tag]]' close_tag = '[[/tag]]' tag_stack = [] output_tokens = [] for line in stdin: tokens = line.split(' ') print(tokens) for token in tokens: output_token = token if len(tag_stack) == 0: output_tokens.append(transform(output_token)) else: output_tokens.append(output_token) if token == open_tag: tag_stack.append(open_tag) elif token == close_tag: tag_stack.pop() print(' '.join(output_tokens))

eventReactive()

因为我没有您的Twitter功能,所以我模拟了一个:

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

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

完整的示例:

search_tweets <- function(search) return(search)