2017-12-03 14 views
0

私はサーバーから反応性のあるデータを使ってプロットを作成しようとしています。残念ながら私はプロットを得ることができません。私は次のようなエラーを受け取ります: "エラー:EXPRは長さ1のベクトルでなければなりません"。私はプロットや異なるライブラリの異なるスタイルを試しました:Quantmod、ggplotなど。助言がありますか?サーバーからの反応的なデータ呼び出しを伴う光沢のあるアプリ

Server: 
library(shiny) 

Dat<-read.csv("A:\\home\\Documents\\Franchise_Failureby_Brand2011.csv", sep=';') 
names(Dat)[1]<-paste("Brand") 
names(Dat)[2]<-paste("Failure") 
names(Dat)[3]<-paste("Disbursement") 
names(Dat)[4]<-paste("Disb$X$1000") 
names(Dat)[5]<-paste("Chgoff") 
Dat1<-Dat[is.na(Dat)==FALSE,] 
Dat<-Dat1[1:578,] 

# Define server logic required to draw a histogram 
shinyServer(function(input, output) { 
    DatSv <- reactive({ 
    Value <- switch(input$Value, 
        "Failure"= Dat$Failure[1:10], 
        "Disbursement"=Dat$Disbursement[1:10], 
        "Disb$X$1000"=Dat$`Disb$X$1000`[1:10], 
        "Chgoff"=Dat$Chgoff[1:10]) 
    Brand<-Dat$Brand[1:10] 
    Brand(input$Value) 
    }) 

# Generate plot 
    output$plot1 <- renderPlot({ 
    library("quantmod") 
    hist(DatSv(), 
     main=paste('r', Value, '(', Brand, ')', sep='')) 
    }) 

    # Generate summary of data 

    output$summary<-renderPrint({ 
    summary(Dat) 
    }) 

}) 


UI: 
library(shiny) 
shinyUI(fluidPage(
    titlePanel("Plot Franchise Failure"), 
    sidebarLayout(
    sidebarPanel(
     radioButtons("n", "Chose output Y Axis:", 
        c("Failure" , 
        "Disbursement", 
        "Disb$X$1000" , 
        "Chgoff")), 

     checkboxInput("show_xlab", "Show/Hide X Axis Label", value=TRUE), 
     checkboxInput("show_ylab", "Show/Hide Y Axis Label", value=TRUE), 
     checkboxInput("show_title", "Show/Hide Title") 
    ), 
    mainPanel(
    tabsetPanel(
     type = "tabs", 
     tabPanel("Plot", plotOutput("plot1")), 
     tabPanel("Summary", verbatimTextOutput("summary")) 
) 
) 
) 
) 
) 
+1

おそらく、問題はスイッチのステートメントから得られます。スイッチの前に 'req(input $ Value)'を追加してみてください。 –

答えて

0

こんにちは、この問題は、UIの入力をサーバーに接続することによって発生します。 UIでradioButtonsのinputid = "n"を指定しました。これは、input$Valueではなく、input$nのラジオボタンの値を取得できることを意味します。後ではinputid = "Value"で入力がないので、常にNULLです。私はあなたのコードにいくつかの他の小さな問題を抱えていましたが、ここではサーバーコードの実際のバージョンです。私はUIを変更していません

library(shiny) 

Dat<-read.csv("A:\\home\\Documents\\Franchise_Failureby_Brand2011.csv", sep=';') 
names(Dat)[1]<-paste("Brand") 
names(Dat)[2]<-paste("Failure") 
names(Dat)[3]<-paste("Disbursement") 
names(Dat)[4]<-paste("Disb$X$1000") 
names(Dat)[5]<-paste("Chgoff") 
Dat1<-Dat[is.na(Dat)==FALSE,] 
Dat<-Dat1[1:578,] 

# Define server logic required to draw a histogram 
shinyServer(function(input, output) { 
    DatSv <- reactive({ 
    switch(input$n, 
      "Failure"= gsub("%","",as.character( Dat$Failure)), 
      "Disbursement"=Dat$Disbursement, 
      "Disb$X$1000"=gsub("\\$","",as.character( Dat$`Disb$X$1000`)), 
      "Chgoff"=gsub("%","",as.character(Dat$Chgoff))) 

    }) 

    # Generate plot 
    output$plot1 <- renderPlot({ 
    library("quantmod") 
    hist(as.numeric(DatSv()), 
     main=paste('Histogram of ',input$n, sep=''), 
     xlab = input$n) 
    }) 

    # Generate summary of data 

    output$summary<-renderPrint({ 
    summary(Dat) 
    }) 

}) 
関連する問題