RStudio Shiny actionButton被忽略了

时间:2014-10-02 16:24:59

标签: shiny rstudio

input$goButton触发的server.R中的actionButton是否应该在RStudio Shiny的if语句中? Shiny网页上的示例显示:

library(shiny)
shinyUI(pageWithSidebar(
  headerPanel("Click the button"),
  sidebarPanel(
    sliderInput("obs", "Number of observations:",
                min = 0, max = 1000, value = 500),
    actionButton("goButton", "Go!")
  ),
  mainPanel(
    plotOutput("distPlot")
  )
))

library(shiny)
shinyServer(function(input, output, message) {
  output$distPlot <- renderPlot({
    # Take a dependency on input$goButton
    input$goButton

    # Use isolate() to avoid dependency on input$obs
    dist <- isolate(rnorm(input$obs))
    hist(dist, main=isolate(paste(system(paste("echo", dist[1],"> /tmp/1 && md5sum /tmp/1"),intern=TRUE),collapse='')))
  })
})

我有一个稍微复杂的例程,上面的例子有更多的语句,事件发生在用户点击Go按钮之前的事件。这让我觉得当被动句中的一个语句是R input$goButton调用时,system()被忽略。

Shiny Server v1.1.0.10000
Node.js v0.10.21
packageVersion: 0.10.0

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

我这就是你想要的?每当按下按钮时,它将增加计数+ 1(从0开始),因此有return()&#34;没有&#34;如果没有按下

rm(list = ls())
library(shiny)
runApp(list(ui = pageWithSidebar(
  headerPanel("Click the button"),
  sidebarPanel(
    sliderInput("obs", "Number of observations:",min = 0, max = 1000, value = 500),
    actionButton("goButton", "Go!")
  ),
  mainPanel(plotOutput("distPlot"))),

  server = function(input, output,session) {
    my_data <- reactive({
      if(input$goButton == 0)
      {
        return()
      }
      isolate({
        input$goButton
        dist <- isolate(rnorm(input$obs))
        hist(dist, main=isolate(paste(system(paste("echo", dist[1],"> /tmp/1 && md5sum /tmp/1"),intern=TRUE),collapse=''))) 
      })
    })
    output$distPlot <- renderPlot({my_data()
    })
  }
)
)