RStudio Shiny Conditional Plot
Я пытаюсь создать веб-приложение с новой функцией RStudio Shiny, которая отображает разные запасы. Я создал следующий пример.
Я хочу выбрать набор данных StockMarket, затем выбрать, например, DAX, а затем, наконец, график должен появиться.
Прямо сейчас, если вы запустите этот код, график появится сразу
Не могли бы вы мне помочь?
ui.R:
library(shiny)
library(ggplot2)
shinyUI(pageWithSidebar(
# Application title
headerPanel("Plot1"),
sidebarPanel(
selectInput("dataset", "Dataset", list("mtcars"="cars", "StockMarket"="stocks")),
conditionalPanel(
condition = "input.dataset=='stocks'",
uiOutput("data")
)),
mainPanel(
plotOutput('plotstock')) ))
server.R:
library(shiny)
require(ggplot2)
library(datasets)
shinyServer(function(input, output) {
output$data<- reactiveUI(function() {
selectInput("data", "Choose Dataset", colnames(EuStockMarkets))
})
output$plotstock <- reactivePlot(function() {
data<-data.frame(EuStockMarkets)
p<- ggplot(data,aes(x=seq(1,length(data[,1])),y=DAX))+geom_line(size=1)+ylab("")+opts(title="Time Series")
print(p)
})})
Ответы
Ответ 1
В функции reactivePlot
вы можете сделать что-то вроде
if (is.null(input$data))
return(NULL)
Я также добавил бы пустую запись в выборку набора данных ("(Choose one)"=""
), а также
if (!nzchar(input$dataset))
return(NULL)
в reactivePlot
.
Ответ 2
Также убедитесь, что вы проверяете пустые строки
if (!nzchar(input$dataset) || input$dataset=='')
return(NULL)