【问题标题】:Shiny App crashes when a non-exisiting directory is chosen选择不存在的目录时,Shiny App 崩溃
【发布时间】:2021-01-17 03:53:32
【问题描述】:

我闪亮的应用程序允许用户选择一些模式(例如公司名称),它们是路径名称的一部分,例如:

  Dir <- paste(x,"/",input$Company, "/", input$folder,  " Selection_ESG_Files/", sep="")
  
  dtVaR <- read_csv(paste(Dir, input$Candidate, '-VaR.csv', sep = '')) # load VaR.csv

但是,如果我选择的输入最终位于不存在的路径中,则应用程序会崩溃。我想显示一条错误消息,指出选择了错误的路径,并且可以重新选择新路径而不会导致应用程序崩溃。验证功能是否有潜在的方法?

【问题讨论】:

    标签: r error-handling shiny shinyapps


    【解决方案1】:

    你可以这样做:

    Dir <- reactive({
      paste0(x, "/", input$Company, "/", input$folder, " Selection_ESG_Files/")
    })
    
    dtVaR <- reactive({
      req(Dir())
      File <- paste0(Dir(), input$Candidate, '-VaR.csv')
      if(file.exists(File)){
        return(read.csv(File))
      }else{
        showNotification("Invalid file.")
      }
    })
    

    【讨论】:

    • 谢谢,但这给了我以下错误:Warning: Error in $: object of type 'closure' is not subsettable。我实际上并没有试图对某些东西进行子集化,对吧?
    • @R_hub 我不认为这个错误来自这段代码。我的猜测是你在某处使用dtVaR$...,而不是dtVaR()$...
    • 那么我必须一直使用 dtVar()$ 吗?此外,它还会从这段代码中引发此错误:Warning in if (file.exists(File)) { : the condition has length &gt; 1 and only the first element will be used
    • @R_hub 这是因为您的输入之一(或x)返回length &gt; 1 向量。始终使用可重复的示例提出问题以获得适当的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多