我上传任何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))
})
}
)
答案 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)
产生