首页 > 解决方案 > R/Shiny:带有长度为零的参数的 If 语句

问题描述

我是 R/Shiny 的新手,我想弄清楚如何做一个非常简单的if陈述。我有一个observeEvent无论出于何种原因被触发两次......现在不担心这个。可以在inFile$datapath有实际数据路径的地方触发,也可以在inFile$datapath没有文件路径的地方触发。我正在尝试写一个if声明来区分两者。

   shinyFileChoose(input,'file', session=session,roots=c(wd='.'))
  
  observeEvent(input$file, {
    #print(input$file)
    inFile <- parseFilePaths(roots=c(wd='.'), input$file)
    print(inFile$datapath)
    if (inFile$datapath == "") {
      print("File Exists")
    }
      else {
        session$reload()
        print("No file found.")
      }
    
  })

print(inFile$datapath)它输出character(0). if如果不给我错误,我无法想出在我的声明中成功测试该值的方法Error in if: argument is of length zero

标签: rif-statementshiny

解决方案


闪亮的输入在程序启动时为空。您必须在观察事件中处理好这一点。

observeEvent(input$file, {
  if (!is.null(input$file)){
  #print(input$file)
  inFile <- parseFilePaths(roots=c(wd='.'), input$file)
  print(inFile$datapath)
  if (inFile$datapath == "") {
    print("File Exists")
  }
    else {
      session$reload()
      print("No file found.")
    }
  }    
})

推荐阅读