2015-08-27 84 views
1

我正在研究一個閃亮的應用,以探索線性迴歸中的方塊和(link)。這個應用程序有三個sliderInput,所以用戶可以選擇:(i)迴歸斜率; (ii)樣本量和(iii)標準偏差。通過這些輸入,應用程序會生成一個原始數據集來繪製一些圖。這與reactive函數正常工作。一個參數的任何改變都會產生新的數據。我的問題是,我想包括一個按鈕來「刷新」所有值,實際上是重新運行生成這些參數的函數。使用`actionButton`刷新閃亮應用中的輸入值

所以我的問題是如何包括在服務器中?

我知道我必須包括在UI中BUTTOM:

actionButton(inputId = "refresh", label = "Refresh" , 
      icon = icon("fa fa-refresh")) 
) 

但我不知道如何使用這個BUTTOM重新運行產生該數據的反應功能。這是在服務器生成數據的代碼:

### Saving data: 
Rawdata <- reactive({ 
    slope <- input$slope 
    SD <- input$SD 
    sample <- input$sample 
    x <- round(1:sample + rnorm(n = sample, mean = 1, sd = 1), digits = 2) 
    y <- round(slope * (x) + rnorm(n = sample, mean = 3, sd = SD), digits  = 2) 
    mod <- lm(y ~ x, data.frame(y,x)) 
    ypred <- predict(mod) 
    Rawdata <- data.frame(y, x, ypred) 
}) 

完整的源代碼可以在GitHub上: ui | server

我很感激任何建議。

最良好的祝願, 古斯塔沃

+0

把你的數據在'reactiveValues',然後有一個'observe'er那響應操作按鈕並更新反應值。 – jenesaisquoi

回答

2

您可以isolate其他輸入變量,並actionButton無功表達僅依賴:

library(shiny) 

shinyApp(
    server = function(input, output, session) { 
     rawdata <- reactive({ 
     # Make action button dependency 
     input$refresh 
     # but isolate input$sample 
     isolate(rnorm(input$sample)) 
     }) 

     output$mean <- renderText({ mean(rawdata()) }) 
    }, 
    ui = fluidPage(
    actionButton(inputId = "refresh", 
     label = "Refresh", icon = icon("fa fa-refresh")), 
    sliderInput(inputId = "sample", 
     label = "Sample size", 
     value = 50, min = 10, max = 100), 
    textOutput("mean") 
) 
) 
+0

完美!現在工作非常順利! –