2012-11-15 23 views
12

Sto cercando di creare un'applicazione web con la nuova funzione RStudio Shiny, che traccia diversi titoli. Ho creato il seguente esempio.RStudio Shiny Conditional Plot

Desidero selezionare il set di dati StockMarket, quindi selezionare ad esempio il DAX e infine dovrebbe apparire il grafico.

In questo momento se si esegue questo codice la trama appare immediatamente

Mi può aiutare per favore?

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) 
})}) 

risposta

18

Nella funzione reactivePlot si può fare qualcosa di simile

if (is.null(input$data)) 
    return(NULL) 

Vorrei anche aggiungere una voce vuota alle scelte del set di dati ("(Choose one)"="") e hanno anche

if (!nzchar(input$dataset)) 
    return(NULL) 

in reactivePlot.

+0

Sono nuovo di questo, ma penso che sarebbe equivalente a anche: 'Se (is.null (ingresso $ set di dati) || nzchar (input $ dataset)) {return()} ' – PatrickT

+0

Ho appena scoperto che in renderPrint, potresti voler avere invece return (invisible()), che restituirà uno spazio vuoto invece delle parole stampate NULL, se ho capito bene. – PatrickT

0

assicurarsi che si verifica per le stringhe vuote

if (!nzchar(input$dataset) || input$dataset=='') 
return(NULL)