2012-11-15 202 views
12

我試圖用新的RStudio功能創建一個Web應用程序Shiny,它繪製不同的股票。我創建了以下示例。RStudio閃亮有條件

我想選擇數據集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) 
})}) 

回答

18

reactivePlot功能,你可以這樣做

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

我還想添加一個空白項數據集選擇("(Choose one)"=""),也有

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

reactivePlot

+0

我是新來的,但我認爲這將是等價於:!'如果(is.null(輸入$數據集)|| nzchar (輸入$ dataset)){return()}' – PatrickT

+0

我剛剛發現,在renderPrint中,如果我理解正確,您可能希望返回(不可見()),它將返回空白而不是打印字符NULL。 – PatrickT

0

還要確保您檢查空字符串

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