更新闪亮的r

时间:2018-03-19 15:29:23

标签: r shiny

我有一个选项,允许用户更改一些默认值(a12)。如果用户选择这样做并输入新值(a12 *),则将使用函数(fn1),否则将使用(a12)的默认值并使用函数(fn2)。问题出在后续运行中(仅更改了一年),即使用户不再更改值a *,也会使用fn1。 现在我希望能够将默认值更新为新值(a12 = a12 *),因此任何后续运行都将使用fn2。我已经尝试过reactiveValues和其他许多东西,但它不起作用。 我在下面做了一个简化的可重复的例子。

        fn1<-function(year1, year2, a){
  table<-data.frame(c(year1,year2,a))
  plotout<-plot(hist(seq(year1:year2)))
  return(list(table,plotout))
}
fn2<-function(year1, year2, a){
  table<-data.frame(c(year1,year2,a^2))
  plotout<-plot(density(seq(year1:year2)))
  return(list(table,plotout))
}
ui <- fluidPage( fluidRow(
                        column(12,sliderInput(inputId="year1",
                                              label="Enter a starting and ending year", value=c(2017,2019),
                                              min=2017, max=2060,sep=""))),


                   fluidRow(column(3,numericInput("a12", label="a12 age<65",value=2))),

                 actionButton("update", "Update Table", icon("refresh"),
                              style="color: #fff; background-color: #337ab7"),

                      fluidRow(tableOutput("Table")),
                      fluidRow(plotOutput("plot"))
                      )

server <- function(input, output) {
  p<-eventReactive(input$update,{
    a12<-2
    if(input$a12!=a12){
      tab<-fn1(input$year1[1],input$year1[2],input$a12)
    }else{
      tab<- fn2(input$year1[1],input$year1[2],a12)
    }
    list(tab1=tab[[1]],tab2=tab[[2]])
  }
  )
  output$Table<- renderTable({
    return(p()$tab1)  })
  output$plot<-renderPlot({p()$tab2})
}

shinyApp(ui = ui, server = server)

由于

0 个答案:

没有答案