匹配错误(el,set,0L):'match'需要向量参数吗?

时间:2016-10-27 00:39:48

标签: r shiny

在Shiny in R中运行以下代码:

client_report_type = reactive({ input$report_type })
  if ( is.element(client_report_type,"Enterprise_user")) 

...

我遇到以下错误消息:

Error in match(el, set, 0L) : 'match' requires vector arguments 

有谁知道这是什么意思,以及如何解决问题? 谢谢!

1 个答案:

答案 0 :(得分:0)

您不需要在反应中输入一个输入来获取值,但输入应该在反应式表达式中。当闪亮的应用程序启动时,反应式表达式之外的任何内容都只会执行一次。如果您尝试在反应式表达式之外使用input值,则会出现错误。根据您对input$report_type的处理方式,您可以将其放在reactive(当然),observeobserveEvent

以下是一些基本示例:

<强>反应性:

dat <- reactive({ 
  if ( is.element(input$report_type,"Enterprise_user")) {
    ...
    myData
  } else {
    NULL
  }  
})

<强>观察:

observe({
  if (is.null(input$report_type))
    return()

  if ( is.element(input$report_type,"Enterprise_user"))
   ...
})

<强> observeEvent:

observeEvent(input$report_type, {
  if ( is.element(input$report_type,"Enterprise_user"))
   ...
}) 

这是关于闪亮和反应性的精彩教程:http://deanattali.com/blog/building-shiny-apps-tutorial/#reactivity-101