我有一个闪亮的应用程序,用户可以在其中上传两个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)
})
最后一行旨在返回没有上载任何输入文件时所读取的默认文件。这是行不通的。我该怎么办?我应该从另一个角度看吗?
答案 0 :(得分:1)
类似的事情应该起作用:
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)