闪亮的应用程序不识别向量c()说"未使用的参数"

时间:2017-05-19 09:07:02

标签: r shiny

我试图使用反应对象制作一个shinyapp。但是,例如,当我执行此操作时(服务器,UI只需要一个verbatimTextOutput):

shinyServer(function(input, output) {

  data <- reactive({
    switch(input$type,
           "a" = data_a,
           "b" = data_b)
  })

  var_quant = reactive(sort(colnames(data()[,!colnames(data())%in%c("var1","var2")])))

#I want to select variables which are not var1 and var2

  output$vector <- renderPrint({
     var_quant()
  })
})

但是当我执行时,我在appli中收到了此错误消息:

Error : unused arguments ("var1","var2")

这个在我的控制台中:

    Warning: Error in c: unused arguments ("var1","var2")

当然,如果写了正确的varnames,我已经多次检查过。

另外,这就是为什么我不明白,当我这样做时它会起作用(但我不想在我的情况下使用这种方法):

vars = c("var1","var2")

shinyServer(function(input, output) {

  data <- reactive({
    switch(input$type,
           "a" = data_a,
           "b" = data_b)
  })

  var_quant = reactive(sort(colnames(data()[,!colnames(data())%in%vars])))

  output$vector <- renderPrint({
     var_quant()
  })
})

例如,我遇到了同样的问题:

vecteur.ts = reactive(ts(vecteur(),start = c(2012,2),end = c(2015,2),freq = 12)) 

Appli:

unused arguments (2012, 2)

控制台:

Error in c: unused arguments (2012, 2)

如果有人知道如何处理这个问题......谢谢

1 个答案:

答案 0 :(得分:0)

您的错误无法复制。我尽一切可能获得相同的输出,但代码保持完美运行。

您获得的错误不是由c()函数本身生成的。至少,不是来自基础包的c()函数。但是当你用另一个函数(或反应式表达式)掩盖c()函数时,这类错误是典型的。

因此,虽然您没有添加该代码,但我确定您做了类似的事情:

> library(shiny)
> c <- reactive({NULL})
> c(2012,2)
Error in c(2012, 2) : unused arguments (2012, 2)

显然NULL可以是其他任何东西。问题是反应式表达本身就是一个函数,这个函数掩盖了基函数c()。这是使用c()函数获得此类错误的唯一方法。

因此,显而易见的解决方案是确保您不会为与常用函数同名的对象提供相同的名称,尤其是在将它们创建为反应式表达式时。如果您坚持使用c作为某种反应式表达式,如果您想使用R函数本身,可以使用base::c()

> c <- reactive({NULL})
> base::c(2012,2)
[1] 2012    2