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