替换值并在反应表中重新计算

时间:2015-01-15 06:54:21

标签: r shiny

我有一个包含三列的表:销售,价格和收入。我想创建一个应用程序,它会询问有关价格的用户输入,但是当没有输入时,即在按下操作按钮之前,图表将根据代码中已有的一些基本价格计算收入。我无法产生这种反应。我提供了以下代码。任何帮助将不胜感激。

ui.R

library(shiny)
library(googleVis)
shinyUI(fluidPage(
  titlePanel("Test"),
  sidebarLayout(
    sidebarPanel(
      numericInput(inputId = "A", label = "A",value=0),
      numericInput(inputId = "B", label = "B",value=0),
      numericInput(inputId = "C", label = "C",value=0),
      numericInput(inputId = "D", label = "D",value=0),
      actionButton("action","Submit")
    ),
    mainPanel(
      htmlOutput("mytable")
    )
  )
))

server.R

library(data.table)
library(googleVis)
library(shiny)
shinyServer(function(input, output) {
  Sales<-c(2,6,9,10)
  Prices<-c(34,43,76,89)
  Prices_user<-reactive({
    c(input$A,input$B,input$C,input$D)
  })
  Rev<-Sales*Prices
  Rev_user<-reactive({
    Sales*Prices_user()
  })

  combined<-data.frame(Sales,Prices,Rev)
  combined_user<-reactive({
    data.frame(Sales,Prices_user(),Rev_user())
  })
  output$mytable<-renderGvis({  
    if(input$action ==0){
      gvisTable(combined)
      }else{
        gvisTable(combined_user())
      }

  })  
})

1 个答案:

答案 0 :(得分:1)

我会修改你的服务器.R像这样(未经测试):

library(data.table)
library(googleVis)
library(shiny)
shinyServer(function(input, output) {

  output$mytable <- ifelse(input$action != 0,

    Sales<-c(2,6,9,10)
    Prices <-reactive({
      c(input$A,input$B,input$C,input$D)
    })
    Rev<-reactive({
      Sales*Prices()
    })
    combined<-data.frame(Sales,Prices,Rev)
    renderGvis({
      gvisTable(combined)
    }),

    Sales<-c(2,6,9,10)
    Prices<-c(34,43,76,89)
    Rev<-reactive({
      Sales*Prices()
    })
    combined<-data.frame(Sales,Prices,Rev)
    renderGvis({
      gvisTable(combined)
    })

  ) 
})