2014-10-21 94 views
0

我正在尝试为项目构建一个闪亮的应用程序,并且我认为我全部完成了,一切似乎都正常工作,但我在运行应用程序时不断收到此错误:控制台中的闪亮的应用程序错误

Error in grep(input$predict, columns) : invalid 'pattern' argument 
Error in parse(text = x) : <text>:2:0: unexpected end of input 
1: Ozone ~ 
^
Error in parse(text = x) : <text>:2:0: unexpected end of input 
1: Ozone ~ 
^

这里是我的ui.R代码:

library(shiny) 

# Define UI for airquality data application 
shinyUI(pageWithSidebar(

    # Application title 
    headerPanel("Air Quality Relationships & Predictions"), 

    sidebarPanel(
      selectInput("outcome", "Outcome:", list("O Zone" = "Ozone", 
                "Solar Radiation" = "Solar.R", 
                "Wind" = "Wind", 
                "Temperature" = "Temp")), 
      uiOutput("predictor"), 
      uiOutput("slider"), 
      h5(textOutput("guess")) 
    ), 

    mainPanel(
      plotOutput("ioPlot") 
    ) 
)) 

这里是server.R代码:

library(shiny) 
    library(datasets) 

    #import dataset 
    airData <- airquality 

    #make list of columns for dropdowns 
    columns <- list("O Zone" = "Ozone", "Solar Radiation" = "Solar.R", "Wind" = "Wind", "Temperature" = "Temp") 

    # Define server logic 
    shinyServer(function(input, output, session) { 

      #set dropdown so it only shows 3 remaining columns, won't compare a variable to itself 
      output$predictor = renderUI({ 
        outc <- input$outcome 
        selectInput("predict", "Predictor:", columns[-grep(outc,columns)]) 
      }) 

      #setup the slider for the current selections, default to mean, set max and min to the observed max and min 
      output$slider = renderUI({ 
        slLabel = paste("Adjust to predict ", names(columns[grep(input$outcome,columns)]), "using this value for ", names(columns[grep(input$predict,columns)]), ":") 
        slVal = round(mean(airData[,input$predict], na.rm=TRUE),0) 
        slMin = round(min(airData[,input$predict], na.rm=TRUE),0) 
        slMax = round(max(airData[,input$predict], na.rm=TRUE),0) 
        sliderInput('slide', slLabel, value = slVal, min = slMin, max = slMax, step=1,) 
      }) 

      #create formula for plot 
      formulaText <- reactive({ 
        paste(input$outcome, " ~ ", input$predict) 
      }) 

      #create text for prediction 
      output$guess <- renderText({ 
        fit <- lm(as.formula(formulaText()), data=airData) 
        slp <- fit$coeff[2] 
        yint <- fit$coeff[1] 
        predout <- round(yint + slp * input$slide,2) 
        paste("Predicted outcome for ", names(columns[grep(input$outcome,columns)]), ": ", predout) 
      }) 

      #create plot and fitted line 
      output$ioPlot <- renderPlot({ 
        fit <- lm(as.formula(formulaText()), data=airData) 
        plot(as.formula(formulaText()), 
          data = airData, xlab=names(columns[grep(input$predict,columns)]), ylab=names(columns[grep(input$outcome,columns)])) 
        abline(fit, col="red") 
        title(main= paste(names(columns[grep(input$outcome,columns)]), " vs. ", names(columns[grep(input$predict,columns)]))) 
      }) 
    }) 

回答

0

我认为这个问题是由于您进行子集columns使predictselectInput

试试这个

output$predictor = renderUI({ 
      selectInput("predict", "Predictor:", columns[columns!=input$outcome]) 
}) 

这应该给你的一切从columnslist除了任何被选定为input$outcome的方式。

编辑 我只注意到你也使用grep多次,以粘贴输出一些文字。相反,你应该使用这样的语句:

xlab=names(columns[columns==input$predict]) 

也就是说,你不需要grep你可以只子集columns直接。

相关问题