我有一个闪亮的应用程序,用户上传两个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)
})最后一行的目标是返回我先前读取的默认文件,如果没有上载输入文件。这不管用。我该怎么做?我应该从不同的角度看它吗?
发布于 2019-04-08 07:55:50
像这样的事情应该有效:
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)https://stackoverflow.com/questions/55566874
复制相似问题