R 当没有文件上传到Shining app时,使用默认csv文件

R 当没有文件上传到Shining app时,使用默认csv文件,r,shiny,R,Shiny,我有一个闪亮的应用程序,用户上传两个csv文件——一个参考数据集和一个测试数据集。数据集在服务器代码中以反应式表达式进行操作,然后数据集的输出用于生成表格和绘图 如果没有上传参考数据集,我想使用默认的参考数据集。如果没有上传数据,如何让反应式表达式返回默认数据 我尝试在应用程序的开头加载数据(称之为'default.ref.data',然后在服务器代码中使用以下命令: ref.data=reactive({ req(input$ref.upload) # read the data

我有一个闪亮的应用程序,用户上传两个csv文件——一个参考数据集和一个测试数据集。数据集在服务器代码中以反应式表达式进行操作,然后数据集的输出用于生成表格和绘图

如果没有上传参考数据集,我想使用默认的参考数据集。如果没有上传数据,如何让反应式表达式返回默认数据

我尝试在应用程序的开头加载数据(称之为'default.ref.data',然后在服务器代码中使用以下命令:

ref.data=reactive({
   req(input$ref.upload)
   # read the data frame that has been uploaded
   df.ref1 <- read.csv(input$ref.upload$datapath) 

   #do some stuff

   return(df.ref1)
   if(is.null(input$files)) return(default.ref.data)
})
ref.data=无功({
请求(输入$ref.upload)
#读取已上载的数据帧

df.ref1类似的方法应该可以工作:

library(shiny)

ui <- fluidPage(fileInput("file1", "Choose CSV File",
                          multiple = FALSE,
                          accept = c("text/csv",
                                     "text/comma-separated-values,text/plain",
                                     ".csv")), tableOutput("tbl"))

server <- function(input, output) {

  get_file_or_default <- reactive({
    if (is.null(input$file1)) {
      mtcars
    } else {
      read.csv(input$file1$datapath)
    }
  })

  output$tbl <- renderTable(get_file_or_default())
}

shinyApp(ui, server)
库(闪亮)

ui
req
需要非空值,因此您的条件是错误的,返回值为空。并且您只能在响应中有一个返回值