使用上传文件中的数据绘制图表时出错

时间:2016-05-26 05:36:29

标签: r plot shiny

我上传任何csv文件之前收到错误invalid first argument

上传csv文件后应用程序正常运行,有没有办法删除此错误。

server.R

library(ggplot2)
library(shiny)
shinyServer(func <- function(input,output){


  data <- reactive({
    file1 <- input$file
    if(is.null(file1)){return()}
    read.csv(file=file1$datapath, header=TRUE)
  })

  output$xselect <- renderUI({
    selectInput("xcol","X variable",names(data()))
  })

  output$yselect <- renderUI({
    selectInput("ycol","Y variable", names(data()))
  })



  output$p <- renderPlot({
    data()
    plot(get(input$xcol), get(input$ycol))
  })


  }
)

2 个答案:

答案 0 :(得分:2)

我们可以检查对象是否存在:

validate(need(data(), "Dataframe not found"))

或者我们可以隐藏所有错误消息:

tags$style(type="text/css",
           ".shiny-output-error { visibility: hidden; }",
           ".shiny-output-error:before { visibility: hidden; }")

答案 1 :(得分:2)

不完全是一个完整的例子,但我认为足够接近。

我认为您正在寻找validate命令。这是一个使用它的更完整的例子:

library(ggplot2)
library(shiny)

ui <- fluidPage(
    textInput("xcol", "xcol:", "wt"),
    textInput("ycol", "ycol:", "mpg"),
    fileInput("file", label = "csv file"),
    plotOutput("p")
) 

server <- function(input,output){
  data <- reactive({
    file1 <- input$file
    if(is.null(file1)){return()}
    read.csv(file=file1$datapath, header=TRUE)
  })
  output$xselect <- renderUI({
    selectInput("xcol","X variable",names(data()))
  })
  output$yselect <- renderUI({
    selectInput("ycol","Y variable", names(data()))
  })
  output$p <- renderPlot({
    validate(need(input$file,"need filename"))
    df <- data()
    plot(df[[input$xcol]], df[[input$ycol]],
         xlab=input$xcol,ylab=input$ycol)
  })
} 
shinyApp(ui=ui, server=server)

产生

enter image description here